Можно ли записать в конец файла 5 Гб в Java? - PullRequest
6 голосов
/ 04 декабря 2008

Можно ли записать в конец 5 ГБ файл на Java? Этот вопрос возник в моем кабинете, и никто не уверен, что ответ.

Ответы [ 5 ]

13 голосов
/ 04 декабря 2008

Это должно быть возможно довольно легко, используя RandomAccessFile . Должно работать что-то вроде следующего:

String filename;

RandomAccessFile myFile = new RandomAccessFile(filename, "rw");

// Set write pointer to the end of the file
myFile.seek(myFile.length());

// Write to end of file here
6 голосов
/ 04 декабря 2008

Да. Взгляните на эту ссылку RandomAccessFile

http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html#seek(long)

То есть вы открываете файл, а затем устанавливаете позицию в конец файла. И начать писать оттуда.

Расскажите нам, как все прошло.

2 голосов
/ 04 декабря 2008

На самом деле это будет зависеть от базовой файловой системы и от того, как JVM на этой платформе реализует файловый поток. Потому что, если размер файла превышает 5 ГБ, вы не можете этого сделать с помощью 32-битной операционной системы, чтобы открыть весь файл и просто записать в него из-за ограничения в 4,3 миллиарда (32 ^ 2).

Итак, ответ был бы коротким: «Да, это возможно, ЕСЛИ Java правильно обрабатывает файл, а Файловая система - хорошая»:)

1 голос
/ 04 декабря 2008

Если вы просто хотите добавить файл, проверьте

FileWriter(File file, boolean append) 
Конструктор

в классе FileWriter .

Извините, у меня нет пригодного для тестирования файла объемом 5 ГБ. :)

0 голосов
/ 04 декабря 2008

5ГБ? Интересно, является ли ОС более серьезной проблемой, но это сомнительно.

Теоретически вы можете просто открыть файл в режиме добавления.

OutputStream in = new java.io.FileOutputStream(fileName, true);

и пишите, пока файловая система не заполнится.

См. Билл Ящерица для данных персонажа.

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