Работа с бинарными файлами в Java

Java   3 Январь 2012  Автор статьи:  

Для работы с бинарным файлом я советую применять класс java.io.RandomAccessFile. Данный класс позволяет использовать произвольный доступ к файлу, что достаточно важно при работе с бинарным файлом. В java невозможно считывать классы или иные структуры отличные от базовых с помощью данного класса. И я пока не знаю такого класса который бы позволял делать это. Если вы профессиональный программист java, то вы сможете решить данную проблему с помощью java reflection, что конечно будет являться нетривиальной задачей. Для более глубокого изучения RandomAccessFile можете перейти по ссылке, а сейчас я хотел бы рассмотреть простой пример.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Main {
public static void main(String[] args) {
try {
RandomAccessFile file=new RandomAccessFile(new File("file.dat"),"rw");
file.readInt();// для считывания int
file.readByte();//стандартное считывание 1 байта
file.seek(10);// сдвигает указатель на 10 байтов вправо //относительно начала.
file.write(10);//пишет в бинарный файл  тип int в позицию, в которой находится указатель
file.writeDouble(1.0);// тоже самое но для дабл, такие же функции есть для базовых типов
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}

Данных функций вам хватит для тривиальной работы с бинарным файлом, но все таки, если вы хотите хорошо разобраться с данным классом, то прочтите по нему побольше информации, так как у него есть некоторые подводные камни. Один из таких подводных камней в свое время меня очень удивил. Если считывать один и тот же бинарный файл на C++ и Java, и считывать их не по байтно, а допустим считать целое число, то данные числа будут разные. Это происходит потому, что Java считывает байты в обратном порядке при стандартных настройках, поэтому важно понимать, что глубокое освоение проблемы дает лучший результат, чем поверхностное. Удачи вам с работой с бинарными файлами!

редактирование бинарников в Java

бинарный файл в Pascal/Delphi

Работа с бинарными файлами в C++

  • Leks

    спасибо кеп

    • http://cybern.ru/ lordrp

      А ты что ожидал?

  • ва

    Спасибо! Вполне понятно новичку!

Научиться программировать

  • на Delphi

  • на Java

  • на C++