2012-05-20 54 views
0

我想写一个BufferedOutputStream的文件的字节,但我需要这个工作在一个while循环。这意味着与TFTP服务器一起工作。它写入文件时绝对没有任何内容(这是毫无意义的)。谁能帮我这个?使用BufferedOutputStream将字节写入while循环的文件。需要帮助

  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

什么是WRQ和ACK? – OmniOwl

+0

写入请求和确认数据包。有关更多详细信息,请参阅RFC 1350。 – DMo

回答

3

当您完成此操作时,您并未关闭流。

1

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

0

只需尝试关闭您的BufferedOutputStream即可。

添加bufferedOutput.close();

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