Я пытаюсь узнать о RandomAccessFile, но после создания тестовой программы я получаю странный вывод.
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileTest
{
public static void main(String[] args) throws IOException
{
// Create a new blank file
File file = new File("RandomAccessFileTest.txt");
file.createNewFile();
// Open the file in read/write mode
RandomAccessFile randomfile = new RandomAccessFile(file, "rw");
// Write stuff
randomfile.write("Hello World".getBytes());
// Go to a location
randomfile.seek(0);
// Get the pointer to that location
long pointer = randomfile.getFilePointer();
System.out.println("location: " + pointer);
// Read a char (two bytes?)
char letter = randomfile.readChar();
System.out.println("character: " + letter);
randomfile.close();
}
}
Эта программа распечатывает
местоположение: 0
персонаж: ?
Оказывается, значение буквы было «䡥», хотя должно быть «H».
Я нашел вопрос, похожий на этот, и, по-видимому, это вызвано чтением одного байта вместо двух, но не объяснил, как именно это исправить.
writeChars
? Всегда читайте и пишите с одной и той же кодировкой. - person Radiodef   schedule 15.01.2015