0

次のコードを実行すると、ランタイム例外が発生します。何が悪いのかわかりません。

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;

public class FileIO {

    public static void main(String[] args){

        File test = new File("test.txt");

        FileOutputStream ostream = new FileOutputStream(test); 

        PrintWriter out = new PrintWriter(ostream);
    }
}

私は取得し続けFileNotFoundExceptionます。プロジェクト内の可能なすべてのフォルダーにファイルを保持しようとし、明示的なパスを指定しようとしましたが、同じ例外が発生し続けます。何か案は?

4

5 に答える 5

2

私がこれを試したとき、それはコンパイルさえしませんでした。メインと言わざるを得なかったthrows FileNotFoundException

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.io.FileNotFoundException;

public class FileIO 
{

    public static void main(String[] args) throws FileNotFoundException
    {

        File test = new File("test.txt");

        FileOutputStream ostream = new FileOutputStream(test); 

        PrintWriter out = new PrintWriter(ostream);            
    }
}

これはエラーなしでうまくいきました

于 2012-10-09T22:44:48.110 に答える
0

答えは間違いなく、現在のディレクトリがあなたが思っているものではないということです。

ファイル変数を初期化した直後に、次のコード行を追加します。

System.out.println(test.getAbsolutePath());

問題は明らかなはずです。

または、絶対パスを指定します。

File test = new File("/mydir/test.txt");
于 2012-10-09T22:45:04.860 に答える
0

次のコードを実行すると、ランタイム例外が発生します。

いいえ、しませんでした。コンパイルしようとすると、コンパイラ エラー メッセージが表示されます。このメッセージは、新しい FileOutputStream が FileNotFoundException をスローし、コードがそれをキャッチしないことを示しています。そのため、コードを修正するか、main() を「FileNotFoundException をスローする」と宣言してください。

于 2012-10-10T00:58:26.017 に答える
0

ほとんどの場合test.txt、現在のディレクトリ内のファイルは読み取り専用であり、( type のクラスをインスタンス化することによってFileOutputStream) 書き込み用に開くことは禁止されています。

ファイルのパーミッションを確認するか、ファイルを削除して、try catchプログラムを再度実行してください ( .FileNotFoundExceptionFileOutputStream

例えば:

    try {
        ostream = new FileOutputStream(test);
        PrintWriter out = new PrintWriter(ostream); 
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  
于 2012-10-09T22:52:25.997 に答える
0

File クラスFileOutputStream クラスに基づいて、これを試してください。

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;

public class FileIO {

    public static void main(String[] args){

        File test = new File("test.txt");

        if (test.exists()) {
            if (!test.isFile()) {
                System.out.println("File " + test.getAbsolutePath() + " is not a regular file!");
                System.exit(1);
            } else if (!test.canWrite()) {
                System.out.println("Can not write to file " + test.getAbsolutePath() + "!");
                System.exit(1);
            }
        } else {
            test.createNewFile();
        }

        FileOutputStream ostream = new FileOutputStream(test); 

        PrintWriter out = new PrintWriter(ostream);
    }
}

これにより、一般的なエラー条件がチェックされます。

  • ファイルが存在しています
  • ファイルは通常のファイルではありません
  • ファイルに書き込めません
于 2012-10-09T22:53:36.030 に答える