0

私は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倍にできるようにするにはどうすればよいですか?

私があなたをあまり混乱させなかったことを願っています;-)

4

1 に答える 1

0

Java 標準 IO ライブラリ (java.io.FileInputStream など) を使用する場合は、スラッシュのみを使用できます。Java は実行中のプラットフォームで保留中を変換します。

于 2013-01-21T16:48:11.417 に答える