如何访问Java 7 java.nio.file.Path中的子文件/文件夹?

发布于 2024-12-17 08:16:05 字数 626 浏览 1 评论 0原文

Java 7 引入了 java.nio.file.Path< /a> 作为 java.io.File 的可能的替代品

使用文件,当我访问特定下的文件时,我会这样做:

File parent = new File("c:\\tmp");
File child = new File(parent, "child"); // this accesses c:\tmp\child

使用路径执行此操作的方法是什么?

我认为这会起作用:

Path parent = Paths.get("c:\\tmp");
Path child = Paths.get(parent.toString(), "child");

但是调用 parent.toString() 看起来很难看。有更好的办法吗?

Java 7 introduced java.nio.file.Path as a possible replacement for java.io.File.

With File, when I access a file under a specific, I would do:

File parent = new File("c:\\tmp");
File child = new File(parent, "child"); // this accesses c:\tmp\child

What's the way to do this with Path?

I supposed this will work:

Path parent = Paths.get("c:\\tmp");
Path child = Paths.get(parent.toString(), "child");

But calling parent.toString() seems ugly. Is there a better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

念﹏祤嫣 2024-12-24 08:16:05

使用 resolve 方法” rel="noreferrer">Path

有两种使用此名称的方法。 One 采用相对 Path其他< /a> 一个字符串。它使用在其上调用的 Path 作为父级,并适当地附加 String 或相对 Path

Path parent = Paths.get("c:\\tmp");
Path child = parent.resolve("child");

Use the resolve method on Path.

There are two methods with this name. One takes a relative Path and the other a String. It uses the Path on which it is called as a parent and appends the String or relative Path appropriately.

Path parent = Paths.get("c:\\tmp");
Path child = parent.resolve("child");
古镇旧梦 2024-12-24 08:16:05

对于任何发现此问题仅专门查找指定路径内的文件的人,您必须了解路径遍历攻击。

请参阅:在Java(或Scala)中过滤向上路径遍历

检查路径是否从根开始是至关重要

Path parent = Paths.get("C:\\tmp");
Path child = parent.resolve("chlid").normalize();
if (!child.startsWith(parent)) {
    throw new IllegalArgumentException("Potential Path Traversal Attack");
}

To anyone finding this question looking specifically only for files that are within the specified path, you must be aware of path traversal attacks.

See: Filtering upwards path traversal in Java (or Scala)

It is critical that you check that the path starts with the root.

Path parent = Paths.get("C:\\tmp");
Path child = parent.resolve("chlid").normalize();
if (!child.startsWith(parent)) {
    throw new IllegalArgumentException("Potential Path Traversal Attack");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文