2010-01-21 28 views
0

有没有什么方法可以在5 MB的10个文件中存储大的二进制文件,如50 MB? 谢谢 有没有特殊的课程?存储一个大的二进制文件

+4

我不知道这个机器人是否可以禁止 – stacker 2010-01-21 21:10:02

+0

所以,你有50个MB的文件你想分成10个5 MB的文件,并且你想用Java来完成它? – John 2010-01-21 21:10:53

+1

堆垛机,好奇你为什么怀疑机器人......很多没有答案的问题? – John 2010-01-21 21:13:04

回答

0

是的,有。基本上只计算你写入文件的字节数,如果它达到一定的限制,然后停止写入,重置计数器并继续使用某个文件名模式写入另一个文件,这样就可以使文件相互关联。你可以做一个循环。你可以学习here如何写入Java文件和补余只是应用小学数学。

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)); 
相关问题