使用DataInputStream接收文件信息并写入它



我正在尝试接收客户端使用DataInputStream发送的文件并将其写入文件。

(客户端使用DataInputStream write(byte[], len, off)方法发送文件)

这是我试图做的,但它没有接收到完整的数据。

InputStream in = s.getInputStream(); //s is Socket that is connected.
BufferedInputStream bis = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bis);
FileOutputStream fos = new FileOutputStream(directory+"/"+filename);
byte b = din.readByte();
while(b != -1){
fos.write(b);
b = din.readByte();
}

我知道上面的实现可能不太优雅。

但是我真的是java新手,所以请原谅我关于糟糕的风格

(如果你知道,如果你推荐更好的,我真的很感激)

结果文件只有4KB,而它应该是401KB

我应该如何修复这段代码,这样我就可以让我的代码工作?

您正在读取一个字节,-1(强制转换为字节)是一个有效的字节值。你不想在-1时停止,而应该捕获EOFException。

在使用标准的InputStream.read()方法(返回int,而不是byte)之一时测试-1

相关内容

  • 没有找到相关文章

最新更新