尝试使用RandomAcessFile从文件读取时出现EOFException错误

时间:2016-10-05 00:00:18

标签: java java-io randomaccessfile

我一直在寻找这个问题的帮助,我找到了很多关于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。我似乎无法弄清楚出了什么问题?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您应该单独捕获EOFException,而不是将其视为错误。您还可以摆脱while()条件并将其更改为true。您获得的EOFException意味着您已到达文件的末尾。

您也忘了在两种方法中关闭文件。