Java:如何使用nio Path标准化路径?

真正令人高兴的事情之一java.io.File是它可以 为 。

new File("/", inputPath).getPath() 始终返回已规范化相对路径的字符串,并且始终以可预测的路径分隔符开始和结束。

有没有办法用新的nio PathPathsclass 做到这一点?

(还请注意,我正在处理其他系统的抽象路径,这与任何本地文件系统无关)

我想要的行为的更多示例:

 - "/foo" -> "/foo"

- "//foo/" -> "/foo"

- "foo/" -> "/foo"

- "foo/bar" -> "/foo/bar"

- "foo/bar/../baz" -> "/foo/baz"

- "foo//bar" -> "/foo/bar"

回答:

此代码有效:

public final class Foo

{

private static final List<String> INPUTS = Arrays.asList(

"/foo", "//foo", "foo/", "foo/bar", "foo/bar/../baz", "foo//bar"

);

public static void main(final String... args)

{

Path path;

for (final String input: INPUTS) {

path = Paths.get("/", input).normalize();

System.out.printf("%s -> %s\n", input, path);

}

}

}

输出:

/foo -> /foo

//foo -> /foo

foo/ -> /foo

foo/bar -> /foo/bar

foo/bar/../baz -> /foo/baz

foo//bar -> /foo/bar

注意,这不是便携式的。在Windows机器上将无法使用…

如果需要便携式解决方案,则可以使用memoryfilesystem,打开一个Unix文件系统并使用:

try (

final FileSystem fs = MemoryFileSystem.newLinux().build();

) {

// path operations here

}

以上是 Java:如何使用nio Path标准化路径? 的全部内容, 来源链接: utcz.com/qa/423723.html

回到顶部