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