Java загружает двоичные файлы - PullRequest
0 голосов
/ 22 ноября 2010

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

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

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

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

Спасибо !!!

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

P.S.2. Зеркало аналога вопроса на C #;

Ответы [ 2 ]

5 голосов
/ 22 ноября 2010

Для файлов с отображенной памятью java имеет пакет nio: Файлы с отображенной памятью

Проверьте класс потока байтов для небольших файлов: Поток байтов

Проверьте буферизованный ввод / вывод для больших файлов: Буферизованный поток

2 голосов
/ 22 ноября 2010

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

// 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 нет такого понятия, как ввод-вывод с отображением в память. Если это то, что вам нужно сделать, вам просто нужно создать действительно большой байтовый массив.

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