我想從多個緩衝區流拆分輸入數據與ScatteringByteChannel。我已經探索NIO頻道,但似乎無法找到一個方法來做到C'S上的InputStream readv()的等價物。文件,套接字等似乎都已被覆蓋,但不是流。 與ScatteringByteChannel看起來最有前途的,但我未能從InputStream設置。 有沒有辦法做到這一點?是否有可能使用基於一個InputStream
感謝您的任何提示。
- 克里斯
我想從多個緩衝區流拆分輸入數據與ScatteringByteChannel。我已經探索NIO頻道,但似乎無法找到一個方法來做到C'S上的InputStream readv()的等價物。文件,套接字等似乎都已被覆蓋,但不是流。 與ScatteringByteChannel看起來最有前途的,但我未能從InputStream設置。 有沒有辦法做到這一點?是否有可能使用基於一個InputStream
感謝您的任何提示。
考慮nio
相當低的級別的接口,相對於高級別接口java.io
提供。您的高層次流可能會使用任何實現。只要您可以一次讀取一個字節,就可以將它變成流。 nio類用於批量數據的原始優化操作。要做這種優化,他們必須很好地知道他們的數據來自哪裏。而一般的InputStream
根本不適合該圖像。
因此,儘管你可以從多個緩衝器的輸入流分散的數據,沒有優化的方式爲每個輸入流可移植這樣做。所以你可以自己實現這個,因爲nio
不會提供任何性能增益。
請注意,您引用的readv
C接口只接受低級整數文件句柄,而不是stdlib使用的FILE*
。前者只能表示原始未緩衝的內核流。後者可能代表任何東西(見fopencookie
手冊頁),但不會提供原始優化的訪問。