public class SequenceAndSplitFile { private static Scanner in; public static void main(String[] args) throws Exception { MergeFile(); // SplitFile(); } //文件 合并 将需要合并的文件放到 MergeFile文件夹下 public static void MergeFile() throws Exception{ System.out.println("提示:请将需要合并的文件放到该路径下:F:\\0123\\文件合并与切割\\Split:"); File dir = new File("F:\\0123\\文件合并与切割\\Split"); System.out.println("请输入,您想合并成的文件名及文件名类型:(union.txt)"); in = new Scanner(System.in); String fileName = in.nextLine(); File mergeFile = new File("F:\\0123\\文件合并与切割\\Merge",fileName); FileOutputStream out = new FileOutputStream(mergeFile); ArrayList<InputStream> list = new ArrayList<InputStream>(); //将 文件夹下的所有文件关联字节输入流 然后 将输入流 添加到ArrayList集合中 File[] files = dir.listFiles(); for (File file : files) { InputStream ins = new FileInputStream(file); list.add(ins); } System.out.println("一个有"+files.length+"个小文件。"); final Iterator<InputStream> it = list.iterator(); Enumeration<InputStream> e = new Enumeration<InputStream>(){ @Override public boolean hasMoreElements() { return it.hasNext(); } @Override public InputStream nextElement() { return it.next(); } };//语句的分号 不要漏掉 @SuppressWarnings("resource") SequenceInputStream sin = new SequenceInputStream(e); byte[] buf = new byte[1024]; int len = 0; while ((len = sin.read(buf))!=-1) { out.write(buf,0,len); } out.close(); System.out.println("合并完成!!"); System.out.println("是否需要删除源文件??Y:是——————N:否"); String chioese = in.nextLine(); if(chioese.equalsIgnoreCase("Y")){ for (File file : files) { file.delete(); } System.out.println("源文件删除完毕!!"); } } public static void SplitFile() throws Exception{ System.out.println("提示:请将需要切割的文件放到该路径下:F:\\0123\\文件合并与切割\\Merge:请先将该文件夹下的多余文件清空"); File dir = new File("F:\\0123\\文件合并与切割\\Merge"); System.out.println("请输入,您想切割成的单个文件的大小,,单位M"); in = new Scanner(System.in); int size = in.nextInt(); File[] files = dir.listFiles(); InputStream ins = new FileInputStream(files[0]); String path = "F:\\0123\\文件合并与切割\\Split\\"; OutputStream out = new FileOutputStream(path+"1.part"); byte[] buf = new byte[size*size]; int len = 0; int count = 0; int num = 1; long start = System.currentTimeMillis(); while ((len = ins.read(buf))!=-1) { count++; out.write(buf,0,len); if(count==100){ out = new FileOutputStream(path+(++num)+".part"); count = 0; } } out.close(); long end = System.currentTimeMillis(); System.out.println("文件切割完成!耗时:"+(end-start)+"毫秒"); } }
流练习————文件的合并与切割
原创
©著作权归作者所有:来自51CTO博客作者倁之的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:字符串与 集合
下一篇:简单的 加密切割 和解密 合并
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 接口请求与文件流处理
JAVA 请求响应中的文件流处理方法
Java 文件流 java -
IO流之切割合并文件
IO流切割合并文件
切割文件 -
File---文件切割和合并
1 好处在于看完下面代码 易于理解hadoop filesplit切割这块具体流程:2 文件切割 操作流
java 大数据 输出流 i++