私はパイプを持っており、そこからデータを読み込む必要があります。しかし、私が読んで理解するように、私はある程度の大きさのバッファを作る必要があります。問題は、パイプからall
データを読み取るためにバッファのサイズを定義する方法ですか?Java:FileChannelからすべてのデータを読み込むためにバッファのサイズを定義する方法
これは私のコードです:
RandomAccessFile aFile = new RandomAccessFile(PIPE_FILE, "r");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(4);//temp 4
while(true){
System.out.println("Size:"+inChannel.size());//returns 0
int bytesRead = inChannel.read(buf);
byte [] bytes=buf.array();
...
buf.clear();
}
このバッファサイズの選択は次のとおりです。読める時間と記憶の間にはじまる。サイズを小さくすると、ループが使用されなくなり、サイズが大きくなるとメモリが増えるため、時間がかかります。私は '1024 'を選ぶためにカンタン値として見ました。 –
ユーザーが['Files.readAllBytes'](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllBytes代わりにjava.nio.file.Path))? – BackSlash
@BackSlash真実を伝えるにはわからない。多くの例では、インターネットの人々がRandomAccessFileを使用して名前付きパイプからデータを読み込むことを推奨しています。 –