3

バイト配列をファイルに出力しようとしています。System.out.println(output_stream) を呼び出すと、作成した文字列が正しく表示されます。ホバーすると、FileOutputStream を使用すると正しく出力されません。これが私がこれまでに得たものです。助言がありますか?

FileOutputStream fos = new FileOutputStream("outputFile.txt"); 
OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8");

String received_string = new String(rPacket.getData(), 0, rPacket.getLength(), "UTF-8");

System.out.println(received_string);
out.write(received_string, 0, received_string.length());

System.out.println(received_string) を呼び出すと、コンソールに情報が表示されます。ただし、ファイルが正しく出力されません。以前に同様の質問をしましたが、出力に苦労しています。助けてくれてありがとう。

4

4 に答える 4

1

Apache Commons FileUtils.writeByteArrayToFileをご覧ください

必要なことをすればいい

于 2013-03-19T03:15:02.203 に答える
0

文字列やライターは一切使用しないでください。バイトをパケットからファイルに直接コピーするだけです。

fos.write(rPacket.getData(), rPacket.getOffset(), rPacket.getLength());

そうすれば、データを破壊することはできません。

于 2013-03-20T22:54:03.973 に答える
0

コードは少し奇妙に見えますが (バイトまたは文字列が必要ですか)、問題ありません。

ファイルで何が見つかりましたか? 見る前にストリーム/ライターを閉じましたか? そうでない場合は、まだどこかにバッファリングされている可能性があります。

ただし、そのパケットをファイルにパイプするだけの場合は、文字列への変換を避けるようにしてください。

于 2013-03-19T03:05:47.203 に答える
-1

BufferedWriter を使用してみてください..

BufferedWriter writer = new BufferedWriter(new FileWriter("outfile"));
writer.write(received_string);
于 2013-03-19T03:11:31.113 に答える