[英]Using BufferedOutputStream to write bytes to file with while loop. Help needed
我正在嘗試使用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);
完成流操作后,您不會關閉流。
您是否缺少bufferedOutput.flush()來刷新所有緩沖的數據。
只需嘗試關閉您的BufferedOutputStream
。
添加bufferedOutput.close();
如果不關閉OutputStream
,則可能會丟失緩沖的數據,這可能就是您所遇到的情況。 關閉它或沖洗它。
您將需要使用BufferedOutputStream
的flush()
方法,以便將所有結果都寫出。 調用close()
方法還會執行flush()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.