当前位置: 首页 > 知识库问答 >
问题:

如何使用 Java 检查给定的文件路径是否位于给定目录路径(任意级别的深度)下 [重复]

刁浩言
2023-03-14

给定两个字符串 - 一个表示目录路径,另一个表示文件路径 - 检查文件是否存在于给定目录下(可以是任何级别)的最有效方法是什么。

我首先将两者转换为 File 对象,并比较它们的规范路径

// null checks etc. omitted for brevity
File file = new File(filePath);
String fileCanonicalPath = file.getCanonicalPath();

File dir = new File(dirPath);
String dirCanonicalPath = dir.getCanonicalPath();

return fileCanonicalPath.startsWith(dirCanonicalPath);

但我不相信这实际上是最准确的方法——我想依靠系统的考虑,而不是比较字符串。

然后,我尝试将两者都转换为File对象,然后递归地调用文件上的get

但这似乎效率相当低。

有没有更好的方法-更有效、更客观地正确-来做到这一点?


共有1个答案

鲁望
2023-03-14

书中有一个主题:Java(探索NIO)季节的完整参考指南(第十二版),即“使用walkFileTree()列出目录树”,它解释了java解决方案来列出目录树并用目录树做任何你想做的事情。

试着阅读一下java的walkFileTree()方法,它会简单地解决你的问题。< br >请随意询问您需要知道的任何问题。

 类似资料:
  • 给定两个字符串——一个表示目录路径,另一个表示文件路径——检查文件是否存在于给定目录下(可以是任意深度)的最有效方法是什么。 我首先将两者转换为对象,并比较它们的规范路径 但我不相信这实际上是最准确的方法 - 我想依靠系统考虑的内容而不是比较字符串。 然后,我尝试将两者都转换为对象,然后递归地调用文件上的

  • 问题内容: 我试图找到给定的路径是否可能是使用java的另一个路径的子级。这两个路径可能不存在。 说是可能的孩子。 目前,我正在与 问题答案: 您还可以使用 java.nio.file.Path 轻松完成此操作。该 java.nio.file.Path.startsWith 方法似乎是处理所有可能的情况。 例: 输出 如果需要更高的可靠性,可以使用“ toRealPath”代替“ toAbsolu

  • 我想检查路径是文件还是目录。如果是目录,那么将目录和文件分别记录下来。稍后我想将它们作为json对象发送。 nodejs binding.lstat(PathModule._Makelong(路径)) 更新:找到解决方案。我必须这样添加testFolder+文件:

  • 我有一个场景,比如,如果文件夹第一次不存在,必须在特定位置创建一个带有时间戳的新文件夹。然后我必须在新创建的文件夹中写入文件。 为了在给定位置下创建新文件夹,我编写了以下代码,该代码不创建文件夹,返回FALSE。 现有路径:D:\工作\POC\输出\ 我的当前Java版本:1.6

  • 问题内容: 我似乎无法获得任何说明如何执行此操作的搜索结果。 我要做的就是能够知道给定的路径是文件还是目录(文件夹)。 问题答案: 应该告诉你。从文档: 从fs.stat()和fs.lstat()返回的对象属于这种类型。 注意: 将 上述溶液 将一个IF; 例如,or或不存在。 如果您想要一个或方法,请尝试按约瑟夫在下面的评论中所述。

  • 我急需一个建议,我到底哪里出了问题 我有servlet api。jar@E:\J2EE\apache-tomcat-6.0.18\lib E:\J2EE\apache-tomcat-6.0.18\lib\servlet api。罐子 我试图运行一个Servlet类"TouchServlet.java"这是在 E:\J2EE\apache-tomcat-6.0.18\webapps\TouchSer