File.listFiles() does not work on Linux(file.listFiles()在Linux上不起作用)
问题描述
好的。我有以下Web应用程序片段(在构造函数中调用-如果这很重要):
private File[] logFiles;
...
try {
File directory = new File(auditDirectory);
LOG.debug("Found directory: " + directory.getAbsolutePath());
logFiles = directory.listFiles();
LOG.debug("Number of logFiles: " + logFiles.length);
} catch (Exception e) {
LOG.error("Exception: ", e);
throw new RuntimeException("Failed to get list of audit files", e);
}
在我的Windows环境(Localhost)中,一切都非常出色。在Linux(Ubuntu)环境上部署后,似乎行
directory.listFiles();
返回空值。我从以下Linux部署日志中得出结论:
c.a.s.a.a.AuditFileSource - Found directory: /home/myapp/myappfolder/logs
c.a.s.a.a.AuditFileSource - Exception:
java.lang.NullPointerException: null
at com.myapp.services.administration.audit.AuditFileSource.<init>(AuditFileSource.java:31) ~[com.myapp.services-2.2.2.jar:2.2.2]
at...
日志行AuditFileSource.java:31实际上是行:
LOG.debug("Number of logFiles: " + logFiles.length);
很明显,NullPointerException是在试图访问为空的logFiles变量上的长度时引发的。
我的第一次尝试是更改相关Linux文件夹上的权限,但它们已经拥有读取权限。我完全迷惑了。有什么想法吗?
推荐答案
这是File
的众多问题之一;其.listFiles()
方法不可靠。
尝试改用此选项:
final Path dir = Paths.get("path/to/directory");
final DirectoryStream<Path> dirStream = Files.newDirectoryStream(dir);
// use the stream
如果fs条目不是目录,您至少会得到一个NotDirectoryException
;如果您没有足够的权限,则会得到一个AccessDeniedException
;依此类推。
删除File
。毕竟现在是2015年。新的文件API(又名JSR 203,又名NIO2)自2011年来一直存在!
从Java8开始,您也可以使用Files.list()
;但是请注意,您应该像这样在试用资源挡路中使用它:
try (
final Stream<Path> stream = Files.list(thedir);
) {
// use the stream
}
这是一个鲜为人知的事实,Stream
(实际上是BaseStream
)实现了AutoCloseable
!
这篇关于file.listFiles()在Linux上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:file.listFiles()在Linux上不起作用
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01