0

我正在尝试使用 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);
4

4 回答 4

3

完成后,您不会关闭流。

于 2012-05-20T15:20:35.500 回答
1

您是否缺少 bufferedOutput.flush() 来清除所有缓冲数据。

于 2012-05-20T15:23:31.437 回答
0

您将需要使用BufferedOutputStream'flush()方法,以便写出所有结果。调用该close()方法还会执行flush().

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

于 2012-05-20T15:32:22.283 回答
0

只需尝试关闭您的BufferedOutputStream.

添加bufferedOutput.close();

如果您不关闭OutputStream,您可能会丢失缓冲数据,这可能就是您的情况。要么关闭它,要么冲洗它。

于 2012-05-20T15:26:44.727 回答