java.io.FileInputStream。<init>(不明なソース)

こんにちは、日食で次のコードを展開

//import cs1.Keyboard;
import java.util.*;
import java.io.*;
public class Parser
{
    public static void main (String[] args) throws IOException
    {
        String [][] addyArray = new String[50][4];
        for (int j=0; j<50; j++)
        {
            for (int k=0; k<4; k++)
            {
                addyArray[j][k] = "\n";
            }
        }
        FileReader inFile = new FileReader ("sample.txt");
        BufferedReader in = new BufferedReader (inFile);
        String line = "";
        int i = 0, a = 0;
        while(in.ready())
        {
            line = in.readLine();
            while (line != null && line != "\n")
            {
                addyArray[i][a] = line;
                line = in.readLine();
                a++;
                if (line == null) line = "\n";
            }
            i++;
            a = 0;
        }
        for(int j=0; j<3; j++)
        {
            for(int k=0;k<4;k++)
            {
                System.out.println((j+1) + "-" + (k+1) + " " + addyArray[j] [k]);
            }
        }
    }
}

I am getting the following error at this line FileReader inFile = new FileReader ("sample.txt");

at java.io.FileInputStream.(Unknown Source)
at java.io.FileInputStream.(Unknown Source)
at java.io.FileReader.(Unknown Source)
at Parser.main(Parser.java:19)

私は上記のソースコードファイルが置かれた同じパッケージフォルダにsample.txtファイルを置いた。なぜこのエラーが出るのかわかりません。あなたは私を助けてくれますか?ありがとうございました

3
実際の例外は何ですか?
追加された 著者 NPE,

3 答え

Eclipseでプログラムを実行すると、現在の作業ディレクトリがデフォルトでプロジェクトのルートディレクトリになります。あなたはおそらくあなたのソースコードのためのサブディレクトリを持っているので、 "sample.txt"を入れるとそれは見つからないでしょう。

Either open the file as "/sample.txt", or (preferably) move the file to the root of your Eclipse project.

ソースコードにファイルを置くことは、それが "リソース"の場合にのみ適切です。実行時に変更する必要はありませんが、Javaソースコードとして表現するのには便利ではない情報です。たとえば、UIのローカライズされたテキストとイメージはリソースですが、ウィンドウサイズや位置のユーザー指定の設定はありません。ファイルをリソースとして扱う場合は、 getResourceAsStream() メソッドを使用します。

3
追加された
合意したgetResourceAsStream()はリソースタイプのファイルを取得するための私の推奨メソッドです。
追加された 著者 JohnnyK,
new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("sample.txt")));

このコードを試してみてください。同じディレクトリにあるファイルを読み込みます。

1
追加された

リソースフォルダに配置する必要があります

src/main/java  ... same package
src/main/resource ... same package
0
追加された