我已经实现了将使用java中的 udp 套接字传输任何txt file
的程序。我正在使用printwriter
来编写和阅读。但是使用它我不能传输除txt之外的任何文件(比方说我想转移pdf)。在这种情况下应该做什么。我使用以下函数进行文件写入。
Output_File_Write = new PrintWriter("dummy.txt");
Output_File_Write.print(new String(p.getData()));
答案 0 :(得分:4)
Writers / PrintWriters用于编写文本文件。它们使用(基于Unicode的)字符数据并使用默认字符编码(或指定的字符编码)对其进行编码,并将其写入文件。
PDF文档(从网络上获取)是二进制格式,因此您需要使用FileOutputStream来编写文件。
您尝试使用UDP传输文档也有点遗憾。 UDP不保证发送的数据报全部到达,或者它们将以与发送时相同的顺序到达。除非您始终能够将整个文档整合到一个数据报中,否则您将需要做大量的工作来检测数据报已被删除或者订单错误...并采取补救措施。
使用TCP会简单得多。
答案 1 :(得分:0)
AFAIK PrintWriter
旨在与文字一起使用。引自doc
将对象的格式化表示形式打印到文本输出流。此类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,程序应该使用未编码的字节流。
为了能够发送二进制数据,您需要为其使用apt API,例如PrintStream