疑問点
"test.txt"という名称のファイルをJavaプログラム上から"C:test.txt"と指定してもエラーにならず
"test.txt"と指定したのと同じように認識される場合がありました。OSはWindows10です。
自分では、エラーになると思っていたのですが…。これはなぜなのでしょうか?
test.txtはCドライブ直下に配置されているわけではありません。
Javaの仕様によるものなのか、OSの仕様によるものかもいまいちよくわかりません。
事象の再現方法
Java
1public class Test { 2 public static void main(String[] args) { 3 4 Path path = Paths.get("C:test.txt"); 5 6 System.out.println(path.toFile().exists()); 7 8 } 9}
のようなコードを書き、ビルドして実行可能jar(例:Test.jar)を作成する。
C:\tmpフォルダを作成し、その中に、
Test.jar
test.txt
を配置する。
(フォルダ名、ファイル名は何でもよいと思われるが、例としてこのような名前にしています。)
コマンドラインで
C:\tmp>java -jar Test.jar
を実行すると、
true
と表示される。
「C:」の部分はjarファイルを配置し、実行するドライブの
ドライブ文字と一致する必要があるように見えた。
(一致していない場合、例えばD:\tmpフォルダで上記のプログラムを実行すると「false」と表示された。)
上記のプログラムではexists()で存在を確認しているだけだが、
実際にファイルの読み込みなどもできた。
実行環境
JDK8(Oracle)
Windows10
調べたこと
Paths.getメソッドについて、APIのドキュメントを参照した…が疑問点は解消できなかった。
https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Paths.html
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/06 03:41
2021/03/06 05:12 編集
2021/03/06 05:18
2021/03/06 18:10 編集