小编典典

TreePath到java.io.File

java

有没有简单的方法可以从File(或java.nio.file.Path就此而言)获得TreePath

例如,您有一个JTree像这样的:

Green
|---Blue
|---Red
|---Yellow
    |---Purple.jpg
    |---Brown.jpg
    |---Black.jpg

如果您TreePath打算去Black.jpg,有没有办法得到File(或Path)路径Green\Yellow\Black.jpg

我可以做到这一点很长的路要走,一个接一个地带父母/孩子,一点一点地构建路径,但是我希望可以有一种更优雅的方式…


阅读 302

收藏
2020-11-30

共1个答案

小编典典

您可以使用简短的正则表达式和toString方法非常简单地执行此操作,以下是一个简单的示例:

TreePath tp = new TreePath(new String[] {"tmp", "foo", "bar"});
String path = tp.toString().replaceAll("\\]| |\\[|", "").replaceAll(",", File.separator);
File f = new File(path);
// path is now tmp\foo\bar on Windows and tmp/foo/bar on unix

编辑:解释

  1. tp.toString()-这将调用数组的本机到字符串方法,因为这是在底层表示TreePath的方式。 返回[tmp, foo, bar]

  2. replaceAll("\\]| |\\[|", "")-使用简单的正则表达式替换字符[]并删除空格。该字符|表示 或具有 JAVA的RegEx风格,因此表示“ 如果遇到左括号,右括号或空白,请将其替换为空字符串” 返回tmp,foo,bar

  3. .replaceAll(",", File.separator)-最后一步,用本地文件路径分隔符替换逗号。 返回tmp/foo/bar or tmp\foobar

2020-11-30