Java文件I/O:为什么总是出现I/O异常?

Java文件I/O:为什么总是出现I/O异常?,java,file-io,bufferedreader,ioexception,bufferedwriter,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"); Buffer

我试图写入一个文件,然后从同一个文件中读取。输出错误: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");
        }
    }
}'

不能同时读取和写入文件,这将引发IOException。在尝试使用其他内容访问该文件之前,应先关闭任何可以访问该文件的内容。在尝试使用BufferedReader访问文件之前,在BufferedWriter上调用close方法应该可以做到这一点

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


编辑:正如zapl所阐明的,有些文件系统(包括Windows)是这样的,但并非所有文件系统都是这样。我的假设是,您使用的文件系统限制了这一点,因为这似乎是最可能的问题。

我将BufferedReader移动到关闭BufferedWriter后的位置,这就成功了。谢谢你的帮助

公共类文件{

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();
    }
}

}

您有什么例外?FileNotFound?查看stacktrace,您应该将其添加到问题中。只需在catch块中执行e.printStackTrace即可。打印堆栈跟踪将告诉您更多错误。让main抛出异常,而不是捕获异常。我猜他是在同一时间写入和读取同一个文件。@zapl谢谢,我已经修改了我的答案。