特别是,我想使用(遗憾的是不可见) 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)
,但是还有另一种更优雅的方法吗?
答案 0 :(得分:1)
好的,所以只是关闭这个问题,正如评论中所述,我最终在我的FileUtil
中编写了一个方法,几乎是sun.nio.fs.Globs.toUnixRegexPattern(String glob)
的副本。效果很好。
如果有人找到更好的方法,请在此处添加其他答案。
答案 1 :(得分:0)
如果您未在本地进行任何文件系统操作,则可以尝试设置
-Dfile.separator=/
系统变量,用于模仿unix路径分隔符。此变量应在启动时传递给JVM