昨日見た夢を教えて下さい

PropertiesクラスのgetPropertyメソッドを利用して
外部ファイルより値を取得しようとしています。

// ファイルパスの取得
java.util.Properties pr = new Properties();
pr.load(new FileInputStream("sample.properties"));
String filePath = pr.getProperty("filePath");
fis.close();

// sample.properties
filePath = C:\test\test.txt

しかし、エスケープ記号?が問題で下記のようになり
うまく取得出来ません。

filePath = C:estest.txt

なぜこのような現象が起こるのでしょうか。
また、回避策はありますでしょうか。

よろしくお願いします。

A 回答 (4件)

ざっと調べた所で、こんな感じでしょうか?



Fileクラス
http://takeoba.cool.ne.jp/java/File.htm

@IT > Java Solution > Java TIPS > WindowsとLinuxの両方で動作するコードを書く
http://www.atmarkit.co.jp/fjava/javatips/115java …

HOME > Java開発Tips > Beginners
ファイル操作の基本を押さえる
http://www.atmarkit.co.jp/fjava/javatips/115java …

定数「File.separator」を使用すれば、確かに実装が多少異なってくるかもしれませんが、SJC-Pの試験でもほんとよく出題されていますし、こっちの方がいいとは思うんですが。(Propertiesクラスなんかも、この質問スレで初めて知りました。)

参考URL:http://takeoba.cool.ne.jp/moreJava/property.htm
    • good
    • 0

原因は


C:\test\test.txt
の文字列を取得した際、「\t」がメタ文字としてエスケープされ「タブ」という解釈をしているからです。
実装を変えずに対応したいのであれば、最初の回答にあるように「\\」とエスケープ文字を重ねるか
「\」の代わりに「/」を使用するのも簡易的でよいかもしれません(ファイルパスとして使用するのであれば)。
    • good
    • 1

確かに、以下のURLではloadメソッドとかstoreメソッドの所にだらだらとエスケープ文字などの説明がありますよね。



java.util
クラス Properties
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …


ただ、あなたが必要としているのはこっちの方じゃないかな~、と。

java.io
クラス File
フィールドの詳細
separator
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …

この回答への補足

回答ありがとうございます。

separatorはファイルパスの区切り文字ですよね?

少し使い方が分からないのですが、もう少し詳しく教えていただけませんか。

補足日時:2007/07/14 11:59
    • good
    • 0

こんばんわ。



実際に試していませんが、プロパティファイル内を
filePath = C:\\test\\test.txtにしてみたらどうですか?

またはfilePath = C:/test/test.txtではダメでしょうか?

この回答への補足

回答ありがとうございます。
ファイルパスは
C:\test\test.txt
という風にしたいと思っています。
(区切り文字の"\"はひとつだけにしたいと思っています)

補足日時:2007/07/14 11:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報