我一直在寻找这个问题的帮助,我找到了很多关于RAF的东西,但没有什么可以回答我的问题,因为我似乎无法找到为什么这不起作用!
当我试图了解RAF以后用它构建数据库时,我创建了一个名为data的简单类,它由以下两种方法组成:
// Writing the desired String into the file
public void writeFile (String text) {
try {
RandomAccessFile raf = new RandomAccessFile("text.dat", "rw");
raf.seek(raf.length());
raf.writeUTF(text);
raf.close();
} catch (IOException e) {
System.out.println("IOException when writing");
}
}
// Reading from the file and returning as a single string
public String readFile () {
String output = "";
try {
RandomAccessFile raf = new RandomAccessFile("text.dat", "r");
raf.seek(0);
output = raf.readUTF();
raf.close();
} catch (EOFException ef) {
} catch (FileNotFoundException e) {
System.out.println("File not found");
} catch (IOException e) {
System.out.println("IOException when reading");
e.printStackTrace();
}
return output;
}
我从主类中的main方法调用这些方法:
Scanner in = new Scanner(System.in);
String input;
Data data = new Data();
System.out.print("Input text here: ");
input = in.nextLine();
data.writeFile(input);
System.out.println(data.readFile());
但是readFile方法只返回一个空String。我似乎无法弄清楚出了什么问题?
提前感谢您的帮助!
答案 0 :(得分:1)
您应该单独捕获EOFException
,而不是将其视为错误。您还可以摆脱while()
条件并将其更改为true
。您获得的EOFException
意味着您已到达文件的末尾。
您也忘了在两种方法中关闭文件。