0

Javaでudpソケットtxt fileを使用して転送するプログラムを実装しました。私は書いたり読んだりするために使用しています。しかし、それを使用すると、txt以外のファイルを転送できません(pdfを転送したいとします)。この場合、何をすべきか。ファイル書き込みには以下の関数を使用しています。printwriter

Output_File_Write = new PrintWriter("dummy.txt");
Output_File_Write.print(new String(p.getData())); 
4

2 に答える 2

4

Writers / PrintWriters は、テキスト ファイルを書き込むためのものです。(Unicode ベースの) 文字データを取得し、デフォルトの文字エンコーディング (または指定されたもの) を使用してエンコードし、それをファイルに書き込みます。

PDF ドキュメント (ネットワークから取得したもの) はバイナリ形式であるため、FileOutputStream を使用してファイルを書き込む必要があります。


また、UDP を使用してドキュメントを転送しようとしていることも少し心配です。UDP は、送信されたデータグラムがすべて到着すること、または送信されたのと同じ順序で到着することを保証しません。ドキュメント全体を常に 1 つのデータグラムに収めることができない場合は、データグラムがドロップされたり、間違った順序で到着したりしたことを検出するために、かなりの量の作業を行う必要があります...そして是正措置を講じる必要があります。

TCP を使用すると、はるかに簡単になります。

于 2012-11-28T04:42:01.310 に答える
0

AFAIKPrintWriterは Text で使用することを意図しています。ドキュメントからの引用

オブジェクトのフォーマットされた表現をテキスト出力ストリームに出力します。このクラスは、PrintStream にあるすべての印刷メソッドを実装します。プログラムがエンコードされていないバイトストリームを使用する必要がある生のバイトを書き込むためのメソッドは含まれていません。

バイナリデータを送信できるようにするには、apt API を使用する必要があります。たとえば、PrintStream

于 2012-11-28T04:41:18.223 に答える