【问题标题】:pdf file transferpdf文件传输
【发布时间】:2012-11-28 14:32:49
【问题描述】:

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

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

【问题讨论】:

标签: java file udp file-transfer


【解决方案1】:

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

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


您尝试使用 UDP 传输文档也有点令人担忧。 UDP 不保证发送的数据报将全部到达,或者它们将以与发送时相同的顺序到达。除非您始终可以将整个文档放入一个数据报中,否则您将不得不做大量工作来检测数据报已被丢弃或以错误的顺序到达......并采取补救措施。

使用 TCP 会简单得多。

【讨论】:

  • 斯蒂芬说得对。实现基于 UDP 的文件传输不是开玩笑;您需要在其之上编写一个完整的可靠性层才能使其工作。对于偶尔的小文件的简单传输,TCP 是唯一的方法。
【解决方案2】:

AFAIK PrintWriter 旨在与文本一起使用。引用doc

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

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

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2011-06-29
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多