Linux でスペースを含むパスを使用しようとすると、明らかに FileNotFoundException が発生します。しかし、回避策としてパスに二重/一重引用符を追加しようとすると、同じ例外が発生します。
原因を調べてみると、引用符を使用したときに生成される絶対パスが、user.homeシステム プロパティ + 指定パスになることがわかりました。
例えば:
このパスを使用する場合:
/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs
これは、引用符を使用しようとしたときに取得する絶対パスです。
/home/db2inst1/"/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs"
また、引用符を追加する代わりにスペースを「\」に置き換えようとしましたが、うまくいきませんでした。
私は多くのAPIを試しましたが、毎回発生します。テスト用にこのコードを作成しました:
System.out.println("- regular path: ");
System.out.println(new File(path).getPath());
System.out.println(new File(path).getAbsolutePath());
System.out.println("- quoted path: ");
System.out.println(new File(quotedPath).getPath());
System.out.println(new File(quotedPath).getAbsolutePath());
そして、これは出力です:
- regular path:
/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs/testing.log
/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs/testing.log
- absolute path:
"/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs/testing.log"
/home/db2inst1/"/home/db2inst1/Desktop/testing - Development Environmet/64_dev/testing/logs/testing.log"
なぜこれが起こっているのか、それを機能させる方法を知っている人はいますか?