2010-11-22 5 views
0

Пожалуйста, покажите мне лучшие/быстрые методы для:Java загрузка двоичных файлов

1) Загрузка очень маленьких двоичных файлов в память. Например, иконки;

2) Загрузка/чтение очень больших двоичных файлов размером 512 МБ +. Может быть, я должен использовать IO с отображением памяти?

3) Ваш общий выбор, когда вы не хотите думать о размере/скорости, но должны делать только одно: читать все байты в память?

спасибо !!!

P.S. Извините, может быть, тривиальный вопрос. Не закрывайте его;)

P.S.2. Mirror аналогового вопроса для C#;

ответ

5

Для отображаемого в памяти файлы Java имеет НИО~D пакет: Memory Mapped Files

ЗАКАНЧИВАТЬ класс потока байт для маленьких файлов: Byte Stream

ЗАКАНЧИВАТЬ буферизованный ввод/вывод для больших файлов: Buffered Stream

2

Самый простой способ прочитать небольшой файл в памяти:

// Make a file object from the path name 
File file=new File("mypath"); 
// Find the size 
int size=file.length(); 
// Create a buffer big enough to hold the file 
byte[] contents=new byte[size]; 
// Create an input stream from the file object 
FileInputStream in=new FileInutStream(file); 
// Read it all 
in.read(contents); 
// Close the file 
in.close(); 

В реальной жизни вы бы нужны блоки try/catch в случае ошибок ввода-вывода.

Если вы читаете большой файл, я бы настоятельно рекомендовал НЕ читать все это в памяти за один раз, если его можно избежать. Прочтите его и обработайте его кусками. Это очень редкое приложение, которое действительно должно содержать 500 МБ-файл в памяти сразу.

В Java нет ввода-вывода с памятью. Если это то, что вам нужно сделать, вам просто нужно создать действительно большой массив байтов.

+1

читать не обязательно, чтобы читать все сразу. Я бы предложил использовать DataInputyStream.readFully(); – 2010-11-22 15:32:57

Смежные вопросы