如何在Windows机器上获取sun.nio.fs.UnixFileSystem的实例?

时间:2011-11-08 05:06:29

标签: java java.nio.file

特别是,我想使用(遗憾的是不可见) sun.nio.fs.Globs.toUnixRegexPattern(String glob)

好的,退一步并给出一些上下文

我有一个pathes迭代器到一个类似unix的远程文件系统(想想ssh unixhost find path -type f)。我也有一个用户提供的glob模式,我现在想要匹配每个路径。

在unix机器上,以下工作正常:

matcher = FileSystems.getDefault().getPathMatcher("glob:" + glob);
// ...
for (String s : remoteFind(...)) {
    if (matcher.matches(Paths.get(s))) {
       // matches, do something
    }
}

但是当它在Windows上运行时,同一个程序完全失败,因为FileSystems.getDefault()返回一个Windows文件系统(恐怖,恐怖)和'\'用作分隔符等。你得到了图片。什么都不匹配。

当然,我可以停止所有这些废话,只是重写(或者更确切地说,复制)sun.nio.fs.Globs.toUnixRegexPattern(String glob),但是还有另一种更优雅的方法吗?

2 个答案:

答案 0 :(得分:1)

好的,所以只是关闭这个问题,正如评论中所述,我最终在我的FileUtil中编写了一个方法,几乎​​是sun.nio.fs.Globs.toUnixRegexPattern(String glob)的副本。效果很好。

如果有人找到更好的方法,请在此处添加其他答案。

答案 1 :(得分:0)

如果您未在本地进行任何文件系统操作,则可以尝试设置

 -Dfile.separator=/

系统变量,用于模仿unix路径分隔符。此变量应在启动时传递给JVM