Вопрос

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

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

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

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

Спасибо!!!

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

PS2. Зеркало аналогового вопроса для C #;

Это было полезно?

Решение

Для отображения памяти файлов Java есть пакет NIO: Памянные файлы сопоставлены

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top