我正在尝试使用BufferedOutputStream将字节写入文件,但我需要在while循环中使用它。这意味着可以使用TFTP服务器。它写的文件绝对没有任何内容(这是毫无意义的)。任何人都可以帮我这个吗?
WRQ WRQ = new WRQ();
ACK ACK = new ACK();
DatagramPacket outPacket;
BufferedOutputStream bufferedOutput = new BufferedOutputStream(new FileOutputStream(filename));
byte[] bytes;
byte[] fileOut;
outPacket = WRQ.firstPacket(packet);
socket.send(outPacket);
socket.receive(packet);
while (packet.getLength() == 516){
bytes = WRQ.doWRQ(packet);
bufferedOutput.write(bytes);
outPacket = ACK.doACK(packet);
socket.send(outPacket);
socket.receive(packet);
}
bytes = WRQ.doWRQ(packet);
bufferedOutput.write(bytes);
outPacket = ACK.doACK(packet);
socket.send(outPacket);
答案 0 :(得分:3)
完成后,您不会关闭该流。
答案 1 :(得分:1)
您是否缺少bufferedOutput.flush()以清除所有缓冲的数据。
答案 2 :(得分:0)
只需尝试关闭BufferedOutputStream
。
添加bufferedOutput.close();
如果你没有关闭OutputStream
,你可能会丢失缓冲数据,这可能是你的情况。关闭它,或冲洗它。
答案 3 :(得分:0)
您需要使用BufferedOutputStream
的{{1}}方法,以便写出所有结果。调用flush()
方法也会执行close()
。