2012-11-28 66 views
0

我已经实现了这个程序,它将使用java中的udp套接字来传输任何txt file。我正在使用printwriter进行书写和阅读。但使用,我不能传输除txt以外的任何文件(比如我想转移pdf)。在这种情况下应该做些什么。我正在使用下面的函数进行文件写入。pdf文件传输

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

此问题与http://stackoverflow.com/a/5599669/130224 – reprogrammer

回答

0

AFAIK PrintWriter是为了与文本一起使用。报价从doc

将对象的格式化表示打印到文本输出流。该类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,程序应使用未编码的字节流。

为了能够送你需要使用apt API为它的二进制数据,例如PrintStream

4

作家/ PrintWriters是编写的文本文件。他们采用(基于Unicode的)字符数据并使用默认字符编码(或指定的字符编码)对其进行编码,然后将其写入文件。

PDF文档(当您从网络获取时)是二进制格式,因此您需要使用FileOutputStream来写入文件。


这也有点关于您试图使用UDP传输文档。 UDP不保证所发送的数据报将全部到达,或者它们将按照它们发送的相同顺序到达。除非您始终可以将整个文档整合到单个数据报中,否则您将不得不做大量的工作来检测数据报是否已被丢弃或按错误顺序到达并采取补救措施。

使用TCP会简单得多。

+0

斯蒂芬的权利有关。实现基于UDP的文件传输不是玩笑;你需要在它上面编写一个完整的可靠性层来使其工作。为了简单传输偶尔的小文件,TCP是唯一的出路。 –