簡體   English   中英

Java中的客戶端服務器文件傳輸

[英]Client-Server File Transfer in Java

我正在尋找一種使用Java中的TCP在客戶端和服務器進程之間傳輸文件的有效方法。 我的服務器代碼如下所示:

socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();

FileInputStream fis = new FileInputStream(new File(filename));

我不確定如何進行。 我知道我想從fis讀取字節,然后將它們寫入os ,但是我不確定使用Java中的字節流讀取和寫入字節的最佳方法。 我只熟悉使用Writer和Readers編寫/閱讀文本。 誰能告訴我這樣做的適當方法? 我應該在其中包裝osfis (如果有),以及如何在沒有hasNext()方法(或等效方法hasNext()情況下繼續讀取字節直到文件結束

您可以執行以下操作:

byte[] contents = new byte[BUFFER_SIZE];
int numBytes =0;
while((numBytes = is.read(contents))>0){
   os.write(contents,0,numBytes);
}  

您可以使用Apache的IOUtils.copy(in,out)或

import org.apache.commons.fileupload.util.Streams;
...
Streams.copy(in, out, false);

檢查源可能很有趣。 http://koders.com嗎?)

有一個帶有transferTo方法的java.nio.Channel,社區中的意見不一,對於較小/較大的文件來說更好。

在Input / OutputStream之間進行簡單的逐塊復制就可以了。 您可以將其包裝在緩沖流中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM