web-dev-qa-db-ja.com

Eclipseのjava.io.FileNotFoundException

コード:

import Java.io.*;
import Java.util.Scanner;

public class Driver {

    private int colorStrength;
    private String color;

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

        String line, file = "strength.txt";

        File openFile = new File(file);
        Scanner inFile = new Scanner(openFile);

        while (inFile.hasNext()) {
            line = inFile.nextLine();
            System.out.println(line);
        }

        inFile.close();
    }
}

これは、クラス用に作成しているプログラムの一部です(2つのプライベート属性はまだ使用されていません)が、strength.txtファイルでこれを実行しようとすると、次のエラーが発生します。

例外:

Exception in thread "main" Java.io.FileNotFoundException: strength.txt (The system cannot find the file specified)
at Java.io.FileInputStream.open(Native Method)
at Java.io.FileInputStream.<init>(Unknown Source)
at Java.util.Scanner.<init>(Unknown Source)
at Driver.main(Driver.Java:14)

Eclipseを持っている人が私にこれを理解するのを助けてくれるなら、それは非常にありがたいです!

9
user2948723

プロジェクトの実行に対して相対的なrelativeファイルパスを使用しました。

そのようにしたい場合は、strength.txtファイルをプロジェクトのbase directoryに配置するだけです。そのようです:

enter image description here

または、システム上のabsoluteファイルパスを参照することもできます。たとえば、次のように使用します。

ウィンドウズ:

C:/dev/myproject/strength.txt

Mac/Unix:

/Users/username/dev/strength.txt

(またはフルパスが何であれ)代わりに。

13
Justin Jasmann

これを行う

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

これは、JVMがファイルを見つけることを期待する場所と、それが期待するフォルダーであるかどうかを示します。したがって、ファイルを配置するか、正確な場所を指定します

3
spiderman

これを使用して、相対パスに到達するためにシステムが使用しているファイルパスを確認します

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

次に、相対パスがこのパスのすぐ後に続くことを確認します。

あなたはそれを文字列に変えることもできます

String filePath = System.getProperty("user.dir");

次に、それをファイルパスの先頭に追加するだけです。

    ImageIcon imageIconRefVar = new ImageIcon(filePath + "/imagepathname");

これをパスで使用したときにこれで問題が解決したことがわかりました(パスがそこにあるはずなので奇妙に見えましたが、うまくいきました)。

2
user3517913

プロジェクトの実行に関連する相対ファイルパスを使用しました。

これで問題が解決した場合は、次の方法で実行ディレクトリをプロジェクトルートからバイナリディレクトリに変更できます。

  1. 「実行」->「実行構成」
  2. [引数]タブで、[作業ディレクトリ]の設定を見つけます。
  3. 「デフォルト」から「その他」に切り替えます。
  4. [ワークスペース]ボタンをクリックして、ポップアップウィンドウでプロジェクトを選択し、[OK]をクリックします。これにより、$(workspace_loc:proj-1)のようなものが表示されます。
  5. その末尾に「/ bin」を追加します。構成を保存します。

割り当てを行っているときにプロジェクトのルートディレクトリにファイルを置くのではなく、教授が特定のファイル階層を必要としているので、これが必要です。さらに、これは絶対パスよりも移植性に優れています。

1
Franklin Yu

ベースディレクトリ内にフォルダを作成し、「res」という名前を付けます。ファイルを「res」フォルダ内に配置します。

使用する String file = ".\\res\\strength.txt";ファイルの場所を参照します。

プログラムで使用するすべてのファイルを格納するには、リソースフォルダーを使用する必要があります(推奨)。

そして、ルートディレクトリからそのファイルを参照します。したがって、ファイルはパッケージ内に存在します。

0
user7909000