java - 文件 I/O 错误

标签 java file-io

我刚刚开始使用 Murach 的 Se 6 中的示例进行文件 I/O 和im 操作。 这是我的代码。我错过了什么吗?我知道后面的代码还有更多内容,但因为这是一个示例,所以应该可以正常工作吗?

//Import import java.io.*; for use with the File I/O Methods.
import java.io.*;
public class MainApp 
{

    public static void main(String[] args) 
    {
    //Create a file object.
    File productFile = new File("product.txt");
    //Open a buffered output stream to allow write to file operations.
    PrintWriter out = new PrintWriter(
                      new BufferedWriter(
                      new FileWriter(productFile)));      

    out.println("java\tMurach's Beginning Java 2\t$49.99");
    out.close();

    BufferedReader in = new BufferedReader(
                        new FileReader(productFile));

    String line = in.readLine();
    System.out.println(line);

    out.close();


    }

}

//回答

通过在我初始化主代码的末尾添加一个抛出异常,该代码可以工作。甚至 txt 文件 products.txt 也按预期位于类文件夹中。 //导入导入java.io.*;与文件 I/O 方法一起使用。

import java.io.*;
public class MainApp 
{

    public static void main(String[] args) throws Exception 
    {
    //Create a file object.
    File productFile = new File("product.txt");
    //Open a buffered output stream to allow write to file operations.
    PrintWriter out = new PrintWriter(
                      new BufferedWriter(
                      new FileWriter(productFile)));      

    out.println("java\tMurach's Beginning Java 2\t$49.99");
    out.close();

    BufferedReader in = new BufferedReader(
                        new FileReader(productFile));

    String line = in.readLine();
    System.out.println(line);

    out.close();


    }

}

最佳答案

问题是对 java.io 包的许多调用都会抛出异常。

简单修复:将以下内容添加到您的方法签名中

 public static void main(String[] args) throws IOException 

几乎同样简单的修复:添加 try/catch/finally block 。

public static void main(String[] args) 
{
    //Create a file object.
    File productFile = new File("product.txt");

    //Open a buffered output stream to allow write to file operations.
    PrintWriter out = null;
    try {   
        out = new PrintWriter(
                new BufferedWriter(
                        new FileWriter(productFile)));      

        out.println("java\tMurach's Beginning Java 2\t$49.99");
    }
    catch(IOException ex) {
        // todo exception handling

        System.out.println("ERROR! " + ex);

    }
    finally {
        out.close();

    }

    BufferedReader in = null;
    try {
        in = new BufferedReader(
                new FileReader(productFile));

        String line = in.readLine();
        System.out.println(line);
    }
    catch (IOException ex) {
        // todo more exception handling
        System.out.println("ERROR! " + ex);
    }
    finally {
        in.close();
    }

}

编辑:您知道您正在尝试调用 out.close() 两次吗?第二个应该是调用 in.close()

关于java - 文件 I/O 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436494/

相关文章:

c++ - 读取文件时进入无限循环

c - fgetc 省略字符然后分配整数

java - 从 SWT 浏览器捕获 window.print()

java - RxJava : Can a result be split into two different observables?

java - 迭代 Stateful Bean 内的所有 EntityManager

c++ - 读取数字并将它们转换为 double ?

Android:将文件保存到内部数据时需要 BufferedOutputStream 吗?

java - Hibernate 级联类型删除父级

javascript - 如果用户尚未登录,Java servlet如何重定向到jsp登录页面?

Java 进出