我有一個管道,我需要從中讀取數據。但是,正如我在閱讀之前所理解的,我必須創建一些大小的緩衝區。問題是如何定義從管道讀取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'作爲comman價值被選中。 –
是否有一個特定的原因,您爲什麼不能用戶['Files.readAllBytes'](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllBytes( java.nio.file.Path))而不是? – BackSlash
@ BackSlash說實話我不知道。在我看到的很多例子中,人們推薦使用RandomAccessFile從命名管道讀取數據。 –