かなりくだらない質問なのですが、これまでに解決策を見つけることができませんでした。
*ファイルを読み込もうとすると、ランタイムに「"file not found error"」と表示されます。ファイルのコンパイルはできました。
私はLinuxを使用しているので、次のようなステートメントを使用しています。
Scanner s = new Scanner(new File("home/me/java/ex.txt"));
と入力すると、ランタイムエラーが発生します。
/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at java.util.Scanner.<init>(Scanner.java:653)
at test.main(test.java:14)
ファイル名を変更したりしてみましたが、うまくいきませんでした。
なぜこのようなことが起こるのか、javaはデフォルトでどこからファイルを探すのか、何か手がかりはありませんか?
Toddさんのおっしゃる通りだと思いますが、もう一つ考慮すべきことがあると思います。実行時にJVMからホームディレクトリを確実に取得し、その場所に相対するファイルオブジェクトを作成することができます。それほど手間がかかるわけではありませんし、他のコンピュータやOSに移ったときにもありがたいことでしょう。
File homedir = new File(System.getProperty("user.home"));
File fileToRead = new File(homedir, "java/ex.txt");
公式Documentationでは、Path
について明確に述べられています。
Linuxの構文です。/home/joe/foo`.
Windows の構文です。C:home/joe/foo
注:joe
は、これらの例でのあなたのユーザー名です。