Хранение большого двоичного файла - PullRequest
0 голосов
/ 22 января 2010

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

Ответы [ 2 ]

1 голос
/ 22 января 2010

Используйте 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));
0 голосов
/ 22 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...