2

以下のようにプロパティファイルにFILEPATHパラメータを書き込んでいます。

String newFilePath = txtFilepath.getText();
Properties prop = new Properties();
java.io.File propFile = new File("src/com/app/tool/properties/settings.properties");
prop.setProperty("FILEPATH", newFilePath);
System.out.println("newFilePath "+newFilePath);
   try {
     prop.store(new FileOutputStream(propFile), "New File location");
    } catch (IOException ex) {
     ex.printStackTrace();
    }

ファイルパスは D:\filelog.txt です

書き込み中、コンソールは次のように出力されます..

newFilePath D:\filelog.txt

しかし、プロパティファイルを開くと、内容は次のようになります..

FILEPATH=D\:\\filelog.txt.

誰か私に提案してください、私が本当にここで何をしているのですか..?

4

3 に答える 3

2

プロパティ ファイルで:は、意味があります。

key = value
key: value

どちらも有効です。したがって、プロパティ ファイルへの書き込み中にエスケープする必要があります。\逃げる必要さえあります。しかし、それらをコンソールに表示すると、エスケープが識別され、値が適切に表示されます。

クラスのstore()メソッドのドキュメントを見たらProperties

このプロパティ テーブルのすべてのエントリは、1 行に 1 つずつ書き出されます。各エントリに対して、キー文字列が書き込まれ、次に ASCII = が書き込まれ、次に関連する要素文字列が書き込まれます。キー文字列と要素文字列の各文字を調べて、エスケープ シーケンスとしてレンダリングする必要があるかどうかを確認します。ASCII 文字の \、タブ、フォーム フィード、改行、およびキャリッジ リターンは、それぞれ \、\t、\f \n、および \r と記述されます。\u0020 未満の文字と \u007E より大きい文字は、適切な 16 進値 xxxx に対して \uxxxx として書き込まれます。キーの場合、すべてのスペース文字は前に \ 文字を付けて書き込まれます。要素の先頭の空白文字は、埋め込まれた空白文字や末尾の空白文字ではなく、前に \ 文字を付けて書き込まれます。キーおよび要素文字 #、!、=、および :

注:-Propertiesプロパティ ファイルの読み取りに使用する場合 (エスケープを処理します) は問題ありませんが、プロパティ ファイルを通常のテキスト ファイルのように読み取る場合 (あなたの心)、それは問題になります。

于 2013-10-09T10:21:13.657 に答える
0

バックスラッシュ\は、別の文字が続くのではなく、静かにドロップインされるエスケープ文字です\

コロン:は、でエスケープする必要がある特殊文字です\

でドキュメントを確認してください

http://commons.apache.org/proper/commons-configuration/userguide/howto_properties.html

于 2013-10-09T10:22:32.540 に答える
0

電話するだけprop.get("FILEPATH")です。入力したとおりに「D:\filelog.txt」が返されることがわかります。

于 2013-10-09T10:33:44.420 に答える