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を持っている人が私にこれを理解するのを助けてくれるなら、それは非常にありがたいです!
プロジェクトの実行に対して相対的なrelativeファイルパスを使用しました。
そのようにしたい場合は、strength.txt
ファイルをプロジェクトのbase directoryに配置するだけです。そのようです:
または、システム上のabsolute
ファイルパスを参照することもできます。たとえば、次のように使用します。
ウィンドウズ:
C:/dev/myproject/strength.txt
Mac/Unix:
/Users/username/dev/strength.txt
(またはフルパスが何であれ)代わりに。
これを行う
System.out.println(openFile.getAbsolutePath());
これは、JVMがファイルを見つけることを期待する場所と、それが期待するフォルダーであるかどうかを示します。したがって、ファイルを配置するか、正確な場所を指定します
これを使用して、相対パスに到達するためにシステムが使用しているファイルパスを確認します
System.out.print(System.getProperty("user.dir"));
次に、相対パスがこのパスのすぐ後に続くことを確認します。
あなたはそれを文字列に変えることもできます
String filePath = System.getProperty("user.dir");
次に、それをファイルパスの先頭に追加するだけです。
ImageIcon imageIconRefVar = new ImageIcon(filePath + "/imagepathname");
これをパスで使用したときにこれで問題が解決したことがわかりました(パスがそこにあるはずなので奇妙に見えましたが、うまくいきました)。
プロジェクトの実行に関連する相対ファイルパスを使用しました。
これで問題が解決した場合は、次の方法で実行ディレクトリをプロジェクトルートからバイナリディレクトリに変更できます。
$(workspace_loc:proj-1)
のようなものが表示されます。割り当てを行っているときにプロジェクトのルートディレクトリにファイルを置くのではなく、教授が特定のファイル階層を必要としているので、これが必要です。さらに、これは絶対パスよりも移植性に優れています。
ベースディレクトリ内にフォルダを作成し、「res」という名前を付けます。ファイルを「res」フォルダ内に配置します。
使用する String file = ".\\res\\strength.txt";
ファイルの場所を参照します。
プログラムで使用するすべてのファイルを格納するには、リソースフォルダーを使用する必要があります(推奨)。
そして、ルートディレクトリからそのファイルを参照します。したがって、ファイルはパッケージ内に存在します。