我有一个问题是通过socket发送文件(不一定是txt文件)。我有2个类:Server,Client。当我从套接字输出流中读取并想要在文件中写入字节时,它看起来工作,但当我打开文件它什么都没有。(损坏显示大小= 0 kb)。我也希望它通过套接字传输所有类型的文件。我不想使用appache commons net。 这是我的代码 服务器类
FileOutputStream toFile1 = new FileOutputStream(f);
BufferedOutputStream toFile= new BufferedOutputStream(toFile1);
BufferedInputStream bis=new BufferedInputStream(incoming.getInputStream());
byte[]buffer=new byte[2048];
int bytesRead=0;
while((bytesRead = bis.read(buffer)) >= 0)
{
toFile.write(buffer, 0, bytesRead);
}
toFile.close();
toFile1.close();
bis.close();
out.println("226 Connection Closed");
out.flush();
}
客户端类
BufferedOutputStream output = new BufferedOutputStream(socket.getOutputStream());
byte[] buffer = new byte[60*2024];
int bytesRead = 0;
while ((bytesRead = input.read(buffer,0,60*1024)) != -1) {
output.write(buffer, 0, bytesRead);
}
答案 0 :(得分:0)
该代码可能发生的唯一方法是,如果您要发送零长度文件,或者从已经位于EOF的文件输入流中读取,或者之后您正在查看错误的文件。