Java文件I / O:为什么我总是得到I / O异常?

时间:2014-11-19 22:51:49

标签: java file-io bufferedreader ioexception bufferedwriter

我正在尝试写入文件,然后从同一个文件中读取。输出为“错误:I / O异常”。意味着程序正在捕获IOException。

public class fileIO {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try
        {
            File file = new File("io.txt");
            BufferedReader read = new BufferedReader(new FileReader(file));
            BufferedWriter write = new BufferedWriter(new FileWriter(file));

            String needs = "This is going to the file";
            write.write(needs);

            String  stuff = read.readLine();
            while(stuff != null)
            {
                System.out.println(stuff);
                stuff = read.readLine();
            }

        }
        catch(IOException e)
        {
            System.out.println("Error: I/O Exception");
        }
        catch(NullPointerException e)
        {
            System.out.println("Error: NullPointerException");
        }
    }
}'

2 个答案:

答案 0 :(得分:0)

您无法同时读取和写入文件,这将抛出IOException。在尝试使用其他内容访问文件之前,您应该关闭任何有权访问该文件的内容。在尝试使用close()访问文件之前,在BufferedWriter上调用BufferedReader方法应该可以解决问题。

编辑:此外,正如其他人所提到的,您可以使用e.printStackTrace()查看程序中发生异常的位置,这在调试时非常有用。

编辑:正如zapl澄清的那样,某些文件系统就是这种情况,包括Windows,但不是全部。我假设您使用的文件系统限制了它,因为它似乎是最可能的问题。

答案 1 :(得分:0)

我将BufferedReader移动到我关闭BufferedWriter的地方之后就完成了。谢谢你的帮助。

public class fileIO {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try
    {
        File file = new File("io.txt");
        BufferedWriter write = new BufferedWriter(new FileWriter(file));

        String needs = "This is going to the file";
        write.write(needs);
        write.close();

        BufferedReader read = new BufferedReader(new FileReader(file));

        String  stuff = read.readLine();
        while(stuff != null)
        {
            System.out.println(stuff);
            stuff = read.readLine();
        }
        read.close();
    }
    catch(IOException e)
    {
        System.out.println("Error: I/O Exception");
        e.printStackTrace();
    }
    catch(NullPointerException e)
    {
        System.out.println("Error: NullPointerException");
        e.printStackTrace();
    }
}

}