• 締切済み

ファイルパスが取得出来ない(Properties.getProperty使用)

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: est est.txt なぜこのような現象が起こるのでしょうか。 また、回避策はありますでしょうか。 よろしくお願いします。

みんなの回答

回答No.4

ざっと調べた所で、こんな感じでしょうか? Fileクラス http://takeoba.cool.ne.jp/java/File.htm @IT > Java Solution > Java TIPS > WindowsとLinuxの両方で動作するコードを書く http://www.atmarkit.co.jp/fjava/javatips/115java020.html HOME > Java開発Tips > Beginners ファイル操作の基本を押さえる http://www.atmarkit.co.jp/fjava/javatips/115java020.html 定数「File.separator」を使用すれば、確かに実装が多少異なってくるかもしれませんが、SJC-Pの試験でもほんとよく出題されていますし、こっちの方がいいとは思うんですが。(Propertiesクラスなんかも、この質問スレで初めて知りました。)

参考URL:
http://takeoba.cool.ne.jp/moreJava/property.htm
  • momozange
  • ベストアンサー率67% (21/31)
回答No.3

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

回答No.2

確かに、以下のURLではloadメソッドとかstoreメソッドの所にだらだらとエスケープ文字などの説明がありますよね。 java.util クラス Properties http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Properties.html ただ、あなたが必要としているのはこっちの方じゃないかな~、と。 java.io クラス File フィールドの詳細 separator http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/File.html#separator

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231046/
depicts
質問者

補足

回答ありがとうございます。 separatorはファイルパスの区切り文字ですよね? 少し使い方が分からないのですが、もう少し詳しく教えていただけませんか。

  • nicepeace
  • ベストアンサー率58% (7/12)
回答No.1

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

depicts
質問者

補足

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

関連するQ&A