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

追加bufferedOutput.close();

を閉じないとOutputStream、バッファリングされたデータが失われる可能性があります。これが、おそらくあなたのケースで起こっていることです。それを閉じるか、フラッシュします。

于 2012-05-20T15:26:44.727 に答える
0

すべての結果が書き出されるように、 BufferedOutputStream'sメソッドを使用する必要があります。メソッドflush()を呼び出すと、 .close()flush()

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

于 2012-05-20T15:32:22.283 に答える