存储大型二进制文件

时间:2010-01-21 21:07:09

标签: java file

有没有办法在5个MB的10个文件中存储50 MB的大型二进制文件? 谢谢 这有什么特殊的课程吗?

2 个答案:

答案 0 :(得分:1)

使用FileInputStream读取文件,使用FileOutputStream写入文件 这里有一个简单的(不完整的)示例(缺少错误处理,写入1K块)

  public static int split(File file, String name, int size) throws IOException {
    FileInputStream input = new FileInputStream(file);
    FileOutputStream output = null;
    byte[] buffer = new byte[1024];
    int count = 0;
    boolean done = false;
    while (!done) {
      output = new FileOutputStream(String.format(name, count));
      count += 1;
      for (int written = 0; written < size; ) {
        int len = input.read(buffer);
        if (len == -1) {
          done = true;
          break;
        }
        output.write(buffer, 0, len);
        written += len;
      }
      output.close();
    }
    input.close();
    return count;
  }

并调用

File input = new File("C:/data/in.gz");
String name = "C:/data/in.gz.part%02d";  // %02d will be replaced by segment number
split(input, name, 5000 * 1024));

答案 1 :(得分:0)

是的,有。基本上只计算您写入文件的字节数,如果它达到某个限制,则停止写入,重置计数器并继续使用特定文件名模式写入另一个文件,以便您可以将文件相互关联。你可以循环完成。您可以学习here如何使用Java写入文件,而残余只需应用小学数学。