2

私はこのコードを使用しようとしました:

saver=new FileOutputStream(file);
byte c;
while ( content.readable() ){ //content is a ChannelBuffer type
    c = content.readByte();
    saver.write(c); 
   }   

しかし、ファイル ストリームがバイナリなので、書き込み速度が非常に遅いようです。ChannelBuffer をファイルに非常に高速に保存する方法はありますか?

4

2 に答える 2

8

バッファ全体をファイルに書き込んでみてください。このサンプルコードは、nettyファイルアップロードアプリからのものです。

    FileOutputStream outputStream = new FileOutputStream(file);
    FileChannel localfileChannel = outputStream.getChannel();
    ByteBuffer byteBuffer = buffer.toByteBuffer();
    int written = 0;
    while (written < size) {
        written += localfileChannel.write(byteBuffer);
    }
    buffer.readerIndex(buffer.readerIndex() + written);
    localfileChannel.force(false);
    localfileChannel.close();
于 2012-05-06T02:59:10.790 に答える
2
    ChannelBuffer cBuffer = ***;

    try (FileOutputStream foStream = new FileOutputStream(filepath)) {
        while (cBuffer.readable()) {
            byte[] bb = new byte[cBuffer.readableBytes()];
            cBuffer.readBytes(bb);
            foStream.write(bb);
        }
        foStream.flush();
    } catch (Exception e) {
        e.printStackTrace();
    }
于 2013-05-23T08:55:29.723 に答える