Я хочу прочитать двоичный файл на Java, который содержит m наборов данных. Я знаю, что каждый набор данных состоит из трех элементов: длинного числа, двойного числа и длинного числа в этой последовательности. Наборы данных повторяются один за другим до конца файла. Предполагая, что число m наборов данных известно, как я могу прочитать файл в Java, не передавая все наборы данных в основную память, чтобы иметь возможность читать и большие файлы, которые не «подходят» в основной памяти?Как читать большой двоичный файл в Java
ответ
Если вы хотите последовательный доступ:
import java.io.FileInputStream;
import java.io.DataInputStream;
DataInputStream dis = new DataInputStream(new FileInputStream("input.bin"))
for(int i = 0; i < m; i++){
long l1 = dis.readLong();
double d1 = dis.readDouble();
long l2 = dis.readLong();
/* do what you need */
}
dis.close();
Если «запись» в вашем файле имеет фиксированный размер, вы можете использовать RandomAccessFile
и, в частности метод seek
, чтобы перейти к позиции, которую вы хотите читать , API также предоставляет методы для чтения длин и удвоений.
У меня есть инструкция: «Наборы данных не должны считываться в основной памяти». Как я могу это решить?
Используйте seek
, чтобы разместить файл и только прочитать наборы данных, которые необходимо прочитать.
У меня есть инструкция: «Наборы данных не должны считываться в основной памяти». Как я могу это решить? – arjacsoh
Я использовал java.nio http://download.oracle.com/javase/7/docs/api/java/nio/package-summary.html, который обеспечивает буферизацию, поскольку мне нужны дополнительные функции, такие как установка порядка байтов. В дополнение к решению johnchen902 вы считываете количество байтов в своем буфере из потока и помещаете их в буфер.
- 1. Java - читать структурированный двоичный файл
- 2. Как читать двоичный файл?
- 3. Как читать двоичный файл двоичным символам java
- 4. Большой двоичный файл в jpa
- 5. vb.net читать двоичный файл
- 6. Как читать большой файл csv?
- 7. читать большой файл json
- 8. Как читать двоичный файл в C#?
- 9. как читать двоичный файл .AMF в android
- 10. Как читать файл двоичный в C#?
- 11. Как читать двоичный файл в Perl
- 12. Как читать двоичный файл в массив байтов?
- 13. Как читать fortran двоичный файл в C?
- 14. Как читать двоичный файл в C++
- 15. читать файл двоичный файл в xna?
- 16. Прочитайте большой двоичный файл big-endian
- 17. Большой двоичный код в файл в Python
- 18. Как написать большой двоичный файл на диск
- 19. читать куски двоичный файл C#
- 20. Как читать большой файл с Amazon S3?
- 21. Как читать и разбирать большой файл STL?
- 22. Как читать большой файл excel в java без увеличения VM
- 23. Как читать двоичный файл двойных чисел с помощью Java?
- 24. Как читать большой текстовый файл в Python?
- 25. Как читать большой файл tif в python?
- 26. C# - Как читать и писать двоичный файл?
- 27. Javascript: читать удаленный файл как двоичный
- 28. VB - Как читать и писать двоичный файл?
- 29. читать HTK двоичный файл в matlab
- 30. читать и писать QGraphicsScene в двоичный файл
'java.io.FileInputStream'' java.io.DataInputStream' 'readLong()' 'readDouble()' – johnchen902
Я бы посмотрел Apache Commons FileUtils http://commons.apache.org/proper/commons- И.О./apidocs/орг/Apache/Обще/IO/FileUtils.html. Это часто лучше стандартных утилит –
@ peter.murray.rust - за исключением того, что у него нет методов работы с бинарными файлами. –