【问题标题】:Using BufferedOutputStream to write bytes to file with while loop. Help needed使用 BufferedOutputStream 通过 while 循环将字节写入文件。需要帮助
【发布时间】:2012-05-27 07:53:19
【问题描述】:

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

【问题讨论】:

  • 写请求和确认包。有关详细信息,请参阅 RFC 1350。

标签: java bufferedoutputstream


【解决方案1】:

当你完成它时,你并没有关闭它。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      试着关闭你的BufferedOutputStream

      添加bufferedOutput.close();

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

      【讨论】:

        【解决方案4】:

        您需要使用BufferedOutputStreamflush() 方法,以便写出所有结果。调用close() 方法也会执行flush()

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

        【讨论】:

          猜你喜欢
          • 2013-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-19
          • 1970-01-01
          • 1970-01-01
          • 2020-10-17
          • 2016-11-30
          相关资源
          最近更新 更多