数据,我有以下的代码,我使用的文件发送到客户端:Java的插座 - 重复去年写
private void sendFile(Socket client) throws Exception {
byte[] data = new byte[4096];
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
FileInputStream fis = new FileInputStream("test.txt");
while (fis.read(data, 0, data.length) != -1) {
dos.write(data);
}
fis.close();
dos.close();
}
说我的发现是,文件大小后不同的问题转让。经过进一步调查,我发现文件在最后的dos.write(data)
上被复制。
例子:
原始文件:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Cras dictum diam neque, eu dictum sem efficitur ut.
Ut eu hendrerit risus.
In dapibus vel lectus at egestas.
传输的文件:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Cras dictum diam neque, eu dictum sem efficitur ut.
Ut eu hendrerit risus.
In dapibus vel lectus at egestas.
Ut eu hendrerit risus.
In dapib
我在这里束手无策,我已经看了上百个例子试图解决这个问题。我试过dos.flush()
,将读取更改为dos.read(data)
,并更改了while
循环条件。我期望传输非常大的文件,所以我不想一次加载一个文件。
编辑:
我一直使用命令行两种telnet
和netcat
测试下载。
您需要检查r来自读取和写入的eturn值。读取的值告诉您读了多少,并且可以安全地写入。来自写入的值告诉您写了多少内容,并可能提示重试。 –