我有以下代碼通過套接字傳輸文件。我如何發送文件名?如何使用Java中的套接字發送帶有文件的文件名?
Socket socket = new Socket("localhost", port);//machine name, port number
File file = new File(fileName);
// Get the size of the file
long length = file.length();
if (length > Integer.MAX_VALUE)
{
System.out.println("File is too large.");
}
byte[] bytes = new byte[(int) length];
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
int count;
while ((count = bis.read(bytes)) > 0)
{
out.write(bytes, 0, count);
}
out.flush();
out.close();
fis.close();
bis.close();
socket.close();
如何與發送文件的文件名?如果我正確使用'File.getName()' – Geros 2013-03-27 00:34:59
我認爲OP正在尋找一個協議定義,以便接收端可以知道在哪裏存儲文件。這需要記錄結束標記等 - 爲什麼不使用像FTP這樣的完善協議? – 2013-03-27 00:37:20
@RonDahlgren由於FTP對於這個目的來說有點太可怕了,而且我不確定Java的支持有什麼用處?對於從發送者A到文件系統形式的接收者B的簡單文件上傳,HTTP會更好。 – millimoose 2013-03-27 00:44:51