2012-11-28 67 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是唯一的出路。 –