2

以前は、fileWriter で file を使用すると機能していましたが、現在は file の代わりに getResourceAsStream を使用しているため、どのように機能させることができますか?

FileWriter fstream = new FileWriter(new File("filename"), true);

今、私が通過するとき

InputStream is = getResourceAsStream("filename");
FileWriter fstream = new FileWriter(is, true);

Mavenアセンブリプラグインで実行可能なjarを作成すると、jarにsrc/main/resourcesがないため、変更する必要がありました

編集:

私の間違いを指摘してくれたカサブランカと他の人たちに感謝します。

ファイルに書き込む必要がありますが、元のコンテンツを保持して追加します。もちろん、どのファイルに書き込んでいるのかを知る必要があります。

4

3 に答える 3

3

まず、ストリームに書き込むには、ファイル ライターではなく、一般的なストリーム ライターが必要です。第二に、書き込みは出力を意味するため、出力ライターが必要です。したがって、探しているクラスはOutputStreamWriter.

getResourceAsStreamは、 の読み取りInputStreamにのみ使用できる を返します。つまり、 などのクラスのみを使用できます。InputStreamReader

アップデート:

を使用して、ファイルに追加するための正しいコードが既にありますFileWriter。ただし、getResourceAsStream読み取り専用のリソースを返すため、データを書き戻す簡単な方法はありません。

于 2010-07-13T14:40:53.827 に答える
3

InputStreamは入力ストリームを表すため、出力には適していません。に書き込むことはできませんInputstream。リソースへの書き込み用ではなく、読み取りgetResourceAsStream用のストリームを返します。

を介してロードされたリソースに書き込む簡単な方法はありませんClassLoader。1 つの解決策は、それを として読み取りProperties、メソッドを使用しstoreてそれをリソース ファイルに書き込み、他の方法で出力ストリームを取得することです。クラスローダーを使用してリソース ファイルの URI を取得できますが、直接書き込みできる保証はありません (たとえば、署名付きの jar にバンドルされている場合)。

于 2010-07-13T14:41:59.490 に答える
0

ここのドキュメントを読むと、InputStream のコンストラクターがないことがわかります。それが私がコンパイルしない理由です。あなたは何も尋ねていないので、それだけです。

于 2010-07-13T14:43:06.590 に答える