1

Murach の Se 6 の例を使用して、ファイル I/O andim の実行を開始しました。これが私のコードです。私は何かが欠けていますか?コードにはさらに多くのものがあることは知っていますが、これは例であるため、これは正しく機能するはずですか?

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


    }

}
4

1 に答える 1

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()編集: 2回電話をかけようとしていることを知っていますか?2番目はへの呼び出しでなければなりませんin.close()

于 2012-05-03T17:53:26.997 に答える