web-dev-qa-db-ja.com

Java-ファイルパス-無効なエスケープシーケンス

ファイルパスを指定して、ファイルを宛先にアップロードしています。ファイルパスが次のような場合は正常に動作します

String filePath = "D:\\location";

しかし、次のようなサーバーの場所を提供している間

String filePath = request.getRealPath("\\10.0.1.18\downloads\upload");

無効なエスケープシーケンスのエラーを生成します。

パスの何が問題になっているのか(私はその場所に完全な特権を持っています)、間違っている場合はそれを正しく暗示しています。

事前に助けてくれてありがとう////

9
NewBee

これはコンパイル時のエラーであるため、パーミッションなどとは関係ありません

問題は、円記号をエスケープしていないことです。必要なもの:

String filePath = request.getRealPath("\\\\10.0.1.18\\downloads\\upload");

そうすると、文字列の内容は

\\10.0.1.18\downloads\upload

これは、最初に示した行とまったく同じです。

String filePath = "D:\\location";

...実際には次の内容の文字列を作成します:

D:\location

文字および文字列リテラル内のエスケープシーケンスの詳細については、 Java言語仕様 のセクション3.10.6)を参照してください。

12
Jon Skeet

スラッシュを使用する\\!それは特別な脱出パターンです。\nまたは\ rのように。

5
Dariusz