簡體   English   中英

使用BufferedOutputStream通過while循環將字節寫入文件。 需要幫助

[英]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 ,則可能會丟失緩沖的數據,這可能就是您所遇到的情況。 關閉它或沖洗它。

您將需要使用BufferedOutputStreamflush()方法,以便將所有結果都寫出。 調用close()方法還會執行flush()

http://www.javapractices.com/topic/TopicAction.do?Id=8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM