私はJava GUIを持っています。ユーザーは、JFileChooser ダイアログを使用して、ファイルへのパスを含むファイルを選択します。パスはテキスト ボックスに表示されます。
\\developDB\directory\subdirectory\file.info
ユーザーが選択したパス (およびテキスト ボックスに表示されたパス) を使用して InputStream でファイルにアクセスすると、ファイルが見つかりません。おっとっと。
ここで、テキスト ボックス内のすべてのバックスラッシュを 2 つにします。すなわち
\\developDB\\directory\\subdirectory\\file.info
テキストボックスからのパスを使用して InputStream を再度読み取ると、ファイルが見つかります。おっとまた。
この理由は、バックスラッシュを別のバックスラッシュでエスケープする必要があるためだと思うかもしれませんが、これは理由ではありません。内部的には、Java はエスケープの目的でバックスラッシュを再度 2 倍にします。
また、Web ブラウザー経由でファイルにアクセスしようとすると、バックスラッシュを 2 つにする必要があります。
これはおそらく2つの原因に関連している可能性があると考えていました:
- JFileChooser は何らかの理由でバックスラッシュを「食べています」。どうすればこれを回避できますか?
- JFileChooser は正常に動作していますが、ファイルが保存されているサーバーのサーバー管理者がパス名の命名規則を設定しています。もしそうなら、Javaプログラムでこれらの標準を認識して、プログラムでバックスラッシュを2倍にできるようにするにはどうすればよいですか?
私があなたをあまり混乱させなかったことを願っています;-)