1

こんにちは、コードにこれがあります

File file = new File("words.txt");
    Scanner scanFile = new Scanner(new FileReader(file));
    ArrayList<String> words = new ArrayList<String>();

    String theWord;    
    while (scanFile.hasNext()){
        theWord = scanFile.next();
        words.add(theWord);
    }

しかし、何らかの理由で私は

java.io.FileNotFoundException

すべての .java ファイルと同じフォルダーに words.txt ファイルがあります。

私は何を間違っていますか?ありがとう!

4

5 に答える 5

6

ヒント: この行をコードに追加してください...

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

次に、そのパスをファイルの実際の場所と比較します。問題はすぐに明らかになるはずです。

于 2011-06-07T13:50:55.193 に答える
5

このファイルは、アプリケーションを実行するディレクトリ、つまり作業ディレクトリに存在する必要があります。

于 2011-06-07T13:50:06.160 に答える
4

一般に、データ ファイルをコードと一緒にパッケージ化することは良い考えですが、それを使用java.io.Fileしてそれらを読み取ることは、見つけるのが難しいため問題になります。getResource()解決策は、 のメソッドを使用java.lang.ClassLoaderしてファイルへのストリームを開くことです。そうClassLoaderすれば、 はコードが保存されている場所でファイルを検索します。

于 2011-06-07T13:53:02.637 に答える
3

試す:

URL url = this.getClass().getResource( "words.txt" );
File file = new File(url.getPath());
于 2011-06-07T13:54:09.527 に答える
2

絶対パスが指定されていません。したがって、パスは、プロセスの現在の作業ディレクトリに対する相対パスとして扱われます。通常、これは Main-Class を起動したディレクトリです。

作業ディレクトリの場所がわからない場合は、次のスニペットを使用して印刷できます。

System.out.println(System.getProperty("user.dir"));

問題を修正するには、元のパスに必要なディレクトリを追加して、ファイルを見つける必要があります。

于 2011-06-07T13:51:28.117 に答える