我想在Scala中使用NIO.2功能(类在java.nio.file中):
在Java中,我会这样做:
Files.newDirectoryStream(Paths.get("/tmp"), new DirectoryStream.Filter<Path>() {
@Override
public boolean accept(Path entry) throws IOException {
return false;
}
});
如何在Scala中执行相同的操作? Fitler
是DirectoryStream
接口内的静态接口。
谢谢。
编辑:如果您想建议我列出文件的其他库/方法,请不要回复。我主要对主要问题感兴趣。
答案 0 :(得分:5)
不是100%确定您是否要求在scala中对此代码进行文字转换:
Files.newDirectoryStream(Paths.get("/tmp"), new DirectoryStream.Filter[Path] {
def accept(entry: Path) = false
})
..或其他什么?您可以添加隐式转换:
class PathPredicateFilter(p: Path => Boolean)
extends DirectoryStream.Filter[Path] {
def accept(entry: Path) = p(entry)
}
implicit def PathPredicate_Is_DirectoryStreamFilter(p: Path => Boolean)
= new PathPredicateFilter(p)
现在你可以这样做:
Files.newDirectoryStream(Paths.get("/tmp"), (p: Path) => false /* your code here */)