傳送文件通過套接字這可能是愚蠢的問題緩衝區的大小,但我想知道應該是什麼 文件傳輸應該是什麼在Java
這裏的緩衝區大小是發送文件
代碼try {
ServerSocket serverSocket = new ServerSocket(1234);
Socket socket = serverSocket.accept();
jTextArea1.append("Accepted connection : " + socket+"\n");
byte [] bytearray = new byte [10485760]; //Buffer size 10Mb
FileInputStream fin = new FileInputStream(GetFile);
BufferedInputStream bin = new BufferedInputStream(fin);
int read;
OutputStream os = socket.getOutputStream();
while((read=bin.read(bytearray))!=-1){
jTextArea1.append("Sending Files...\n");//I have printed the read variable
System.out.println("Read: "+read);
os.write(bytearray,0,read);
os.flush();
}
socket.close();
serverSocket.close();
System.out.println("File transfer complete\n");
} catch (IOException ex) {
Logger.getLogger(BufferedFileTransfar.class.getName()).log(Level.SEVERE, null, ex);
}
}
注: - 輸入文件大小是143MB每從而可以緩衝大小的文件應在15份被分割,它被劃分
輸出: -
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 10485760
Read: 3603264
File transfer complete
所以對於同一個文件,如果我使用大緩衝區,那麼它會好嗎?
通常的值在'1024'和'8192'之間。 – Kayaman
所以我應該減少緩衝區大小 –
嗯,你沒有得到任何東西,因爲它有那麼大。 – Kayaman