文件I / O出错

时间:2012-05-03 17:33:07

标签: java file-io

我刚刚开始使用Murach的Se 6中的一个例子来处理文件I / O和。 这是我的代码。我错过了什么。我知道进一步的代码有更多但是因为这是一个例子,这应该工作正确吗?

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


    }

}

//应答

通过添加一个throws异常到我初始化主要的代码工作的结尾。甚至txt文件products.txt都在预期的类文件夹中。 //导入import 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();


    }

}

1 个答案:

答案 0 :(得分:1)

问题是对java.io包的一些调用会抛出异常。

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

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

几乎同样容易解决:添加try / catch / finally块。

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

的调用