2010-01-21 4 views
0

Существуют ли способы хранения большого двоичного файла, такого как 50 МБ, в десяти файлах с 5 МБ? спасибо Есть ли специальные классы для этого?Хранение большого двоичного файла

+4

Интересно, будет ли этот бот может быть запрещен – stacker

+0

Так у вас есть 50 MB файлы вы хотите разделить на десять файлов размером 5 МБ, и вы хотите использовать Java для этого? – John

+1

штабелер, любопытно, почему вы подозреваете, что бот ... много вопросов без ответов? – John

ответ

0

Да, есть. В основном просто подсчитывайте байты, которые вы пишете в файл, и если он достигает определенного предела, прекратите запись, сбросьте счетчик и продолжите запись в другой файл с использованием определенного шаблона имени файла, чтобы вы могли сопоставить файлы друг с другом. Вы можете сделать это в цикле. Вы можете узнать, как писать файлы в Java, а для остатка просто применять математику начальной школы.

1

Используйте FileInputStream для чтения файла и FileOutputStream для его записи.
Вот простой (неполный) пример (отсутствие обработки ошибок, пишет 1К ломти)

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)); 
Смежные вопросы