import java.io.*; public class IOTest { public static void main(String[] args){ //拆分文件 devide(); //合并文件 merge(); } public static void devide(){ //要被拆分的目标文件 File file = new File("E:\merge\sxcs项目执行流程.txt"); //文件读写流 FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; int num = 0; try { //获取文件的输入流,用来读取文件 fileInputStream = new FileInputStream(file); //每次读的字节大小为100k byte[] by = new byte[100]; while((fileInputStream.read(by)) != -1){ //新建存放拆分后字节的文件 File files = new File("E:\merge\sxcs项目执行流程"+num+".txt"); //获取输入流 fileOutputStream = new FileOutputStream(files); //写入文件 fileOutputStream.write(by); num++; //重新初始化by数组,清空内容,如果拆分后源文件不是100的整数倍, 写入文件后会将上一个子文件的一部分写进去 by = new byte[100]; } } catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ try { if(fileOutputStream != null){ fileOutputStream.close(); } if(fileInputStream != null){ fileInputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } public static void merge(){ //要合并的文件所在目录, 用来获取需要合并的文件集合 File file = new File("E:\merge"); //合并后文件存放的位置 File outFile = new File("E:\merge\merge.txt"); //获取需要合并的文件集合 File[] filelistFiles = file.listFiles(); FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; //循环每一个文件, 合并到一个文件重 for(File f : filelistFiles){ try { //存储字节大小为文件大小 byte[] by = new byte[(int)f.length()]; fileInputStream = new FileInputStream(f); fileInputStream.read(by); //将读取出来的文件,采用追加的方式添加到文件中 fileOutputStream = new FileOutputStream(outFile,true); fileOutputStream.write(by); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(fileInputStream != null){ fileInputStream.close(); } if(fileOutputStream != null){ fileOutputStream.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }