24

ファイルを読み書きしようとしていますが、リソース経由でそのファイルにアクセスしたいと思います。

これが私がすることです

File f = new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI());
BufferedReader br = new BufferedReader(new FileReader(f));
String line = br.readLine();

PrintWriter p = new PrintWriter(new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI()));

しかし、どちらも正しくないようです。これを行う正しい方法は何ですか?

4

3 に答える 3

27

入力については、以下を試してください。

     InputStreamReader isReader = 
                      new InputStreamReader(
                          this.getClass().getResourceAsStream(templateName));
      BufferedReader br = new BufferedReader(isReader);     

また

     InputStreamReader isReader = 
                      new InputStreamReader(
                          <youclassName>.class.getResourceAsStream(templateName));
      BufferedReader br = new BufferedReader(isReader);   

出力については、以下を試してください。

      PrintWriter writer = 
               new PrintWriter(
                     new File(this.getClass().getResource(templateName).getPath()));
于 2012-10-21T18:47:54.677 に答える
3

上記のすべてのソリューションは、ビルド フォルダー内のリソースへのアクセスを受け取る方法を示しています。これは、リソースが.classファイルのあるビルド ディレクトリに移動されたことを意味します。
プログラムの終了後に保存するためにいくつかのファイルをリソースに書き込む必要がある場合は、ルート プロジェクトから始まるパスを記述する必要があります。

./src/main/resources/foo.ext

この解決策は一般的に推奨されませんが、他の場合には必要になる場合があります。

于 2016-10-07T05:33:59.267 に答える