Yur*_*kov 9 java nio java-8 java-stream
对于我的具体任务,我需要将数据读取FileChannel到Stream(或Collection)String的.
在常规NIO中Path我们可以使用方便的方法Files.lines(...)返回一个Stream<String>.我需要得到相同的结果,但是从而FileChannel不是Path:
public static Stream<String> lines(final FileChannel channel) {
//...
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何做到这一点?
Hol*_*ger 10
我假设您希望在返回关闭时关闭通道Stream,因此最简单的方法是
public static Stream<String> lines(FileChannel channel) {
BufferedReader br = new BufferedReader(Channels.newReader(channel, "UTF-8"));
return br.lines().onClose(() -> {
try { br.close(); }
catch (IOException ex) { throw new UncheckedIOException(ex); }
});
}
Run Code Online (Sandbox Code Playgroud)
它实际上并不需要FileChannel输入,一个ReadableByteChannel就足够了.
请注意,这也属于"常规NIO"; java.nio.file有时被称为"NIO.2".
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |