Java - перезаписать часть двоичного файла - PullRequest
3 голосов
/ 16 марта 2011

Я пытаюсь перезаписать последние 26 байт файла. В основном мне нужно поместить несколько целочисленных и байтовых переменных там. Я пытаюсь использовать DataOutputStream вместе с FileOutputStream, но у этих вещей нет метода seek () или чего-то подобного. Итак, как я могу сделать writeInt (), начиная с (размер файла - 26)? Я вижу, что есть метод записи, который принимает смещение, но я не уверен, что это то, что я хочу, и если да, то как преобразовать переменные типа int, long и byte в byte [] для передачи в этот метод.

Спасибо за совет

Ответы [ 2 ]

6 голосов
/ 16 марта 2011

Используйте RandomAccessFile - в нем есть все методы, которые вы можете захотеть.

http://download.oracle.com/javase/1.5.0/docs/api/java/io/RandomAccessFile.html

5 голосов
/ 16 марта 2011

Используя RandomAccessFile, вы можете сделать что-то вроде этого:

File myFile = new File (filename);
//Create the accessor with read-write access.
RandomAccessFile accessor = new RandomAccessFile (myFile, "rws");
int lastNumBytes = 26;
long startingPosition = accessor.length() - lastNumBytes;

accessor.seek(startingPosition);
accessor.writeInt(x);
accessor.writeShort(y);
accessor.writeByte(z);
accessor.close();

Надеюсь, это поможет! Дайте мне знать, достаточно ли это хорошо или нет.

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