gpt4 book ai didi

java listfiles卡在带有错误字符的文件上

转载 作者:行者123 更新时间:2023-11-29 09:17:43 25 4
gpt4 key购买 nike

我有这段代码列出了目录中的所有文件:

File d = getRootDir(cId);
return d.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(FILE_EXTENSION);
}
}

它挂起是因为目录已损坏并且文件名包含无效字符。有没有其他方法可以执行此操作,以便我可以获得文件列表而不是挂起?

谢谢。

最佳答案

就个人而言,每当我进行文件操作时,我都会使用 apache Commons-io .我发现 API 比 Java 自己的 API 更容易使用,同时仍然使用标准的文件对象。

也就是说,我不知道切换是否会使其在不挂起的情况下列出。

在您的接受方法中插入一条记录语句。我会推荐一个日志库,但一个简单的

System.out.println("检查"+ name + "in "+ dir);

应该足够了。

您现在知道它卡在哪里,但可能不知道为什么。也许它并没有像您认为的那样挂起,日志语句将为您提供更多相关信息。您可以通过跟踪调试代码来更深入地挖掘,尽管为此您可能需要下载 JDK 的源代码。

导致问题的文件中的非法字符是什么?

此外,请再次查看您的代码。文件名包含文件和扩展名。通过使用 endsWith 检查,您可能会在文件可能没有扩展名或不同扩展名的情况下出现误报。例如:

FILE_EXTENSION = "日志";

以下文件将触发,但它不是您想要的。

  • totolog
  • toto.totolog

您可以在 .之前,如果您拥有完全控制权(不是用户定义的配置),那么它就可以了,但更简洁的解决方案是提取扩展名并进行比较。简单调用 FilenameUtils.getExtension会成功的。

关于java listfiles卡在带有错误字符的文件上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com