zoukankan      html  css  js  c++  java
  • Java 文件分割 和 文件合并

    文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来)。

    找了好多博客,本来想转载一个来的 结果找不到了。很无奈。

    只好自己贴代码上了。

    当然我会尽力好好写注释的。

    文件切割器:

     1 import java.io.File;
     2 import java.io.FileNotFoundException;
     3 import java.io.IOException;
     4 import java.io.RandomAccessFile;
     5 import java.util.Scanner;
     6 
     7 public class Main {
     8     public static void main(String[] args) throws FileNotFoundException, IOException {
     9         File sourceFile = new File("ping.mp3");
    10 //        System.out.println(sourceFile.exists());
    11         Scanner scanner = new Scanner(System.in);
    12         int numberOfPieces = 1;        //默认文件切割的数量
    13         System.out.println("Enter:");        //提示输入
    14         numberOfPieces = scanner.nextInt();        //输入
    15         scanner.close();        //输入后就关闭 装完逼就跑一个道理
    16         long fileLength = sourceFile.length() / numberOfPieces;        //分一下每一个小文件的大小
    17         byte[] b = new byte[1024];        //这个不解释 如果看不懂 就去看IO流去吧
    18         RandomAccessFile raf1 = new RandomAccessFile(sourceFile, "r");        
    19         int len = -1;
    20         for(int i = 0; i < numberOfPieces; i++) {
    21             String name = sourceFile.getName() + "." + (i+1);
    22             File file = new File(name);
    23             file.createNewFile();
    24             RandomAccessFile raf2 = new RandomAccessFile(file, "rw");
    25             while((len = raf1.read(b)) != -1) {
    26                 raf2.write(b, 0, len);        //我觉的这样写比raf2.write(b);高明一些
    27                 if(raf2.length() > fileLength)        //如果太大了就不在这个子文件写了 换下一个
    28                     break;
    29             }
    30             raf2.close();
    31         }
    32         raf1.close();
    33     }
    34 }

    文件合并器:

     1 import java.io.File;
     2 import java.io.FileNotFoundException;
     3 import java.io.IOException;
     4 import java.io.RandomAccessFile;
     5 
     6 //文件合并 ping.n
     7 public class Main {
     8     public static void main(String[] args) throws FileNotFoundException, IOException {
     9         File[] files = new File[10];
    10         String name = "ping.";
    11         File file = new File("ping.mp3");
    12         file.createNewFile();
    13         RandomAccessFile in = new RandomAccessFile(file, "rw");
    14         in.setLength(0);
    15         in.seek(0);
    16         byte[] bytes = new byte[1024];
    17         int len = -1;
    18         for(int i = 0; i < files.length; i++) {
    19             files[i] = new File(name + (i + 1));
    20             //System.out.println(files[i].exists());
    21             RandomAccessFile out = new RandomAccessFile(files[i], "rw");
    22             while((len = out.read(bytes)) != -1) {
    23                 in.write(bytes, 0, len);
    24             }
    25             out.close();
    26         }
    27         in.close();
    28     }
    29 }

    文件合并器就不写注释了,因为这是一个逆过程。(懒癌附体)

  • 相关阅读:
    算法训练 素因子去重
    vs2013配置opencv2.4.9
    vs2013配置opencv2.4.9
    运用map并于执行期指定排序准则
    运用map并于执行期指定排序准则
    vs2013错误解决方法
    vs2013错误解决方法
    win8.1系统vs2013中boost 1.55.0的安装
    win8.1系统vs2013中boost 1.55.0的安装
    Vector的小知识点
  • 原文地址:https://www.cnblogs.com/zuosy/p/7265078.html
Copyright © 2011-2022 走看看