为什么在访问Tomcat上的文件时使用空指针(使用HttpServlet)?

我想从我的JSP项目的根目录中获取文件夹的列表,然后将它们显示给用户的表中,并链接到子文件夹和文件夹的大小。下面的代码是获取WebContent文件夹内的目录列表。为什么在访问Tomcat上的文件时使用空指针(使用HttpServlet)?

String absolutePath = this.getServletContext().getRealPath("/") + relativePath; 

String fileList = "<tr><th>File Name</th><th>Size [B]</th><th>Last Updated</th></tr>";

File folder = new File(absolutePath);

File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {

if (listOfFiles[i].isDirectory()) {

Path file = listOfFiles[i].toPath();

BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);

String time = attr.lastAccessTime().toString();

fileList += "<tr><td><img width='15px' alt='**' src='assets\\images\\folder.png'/>&nbsp;"

+ "<button onclick='navigate(this);'>" + listOfFiles[i].getName() + "</button></td><td>" + attr.size() + "</td><td>"

+ time.replace("T", " ").substring(0, time.indexOf("."))

+ "</td></tr>";

}

}

当我在本地运行项目时,没有问题。但是,在服务器上部署我的.war文件后,运行的时候我在行得到一个500错误(空指针异常):

for (int i = 0; i < listOfFiles.length; i++) 

告诉我该文件夹阵列尚未与子文件夹初始化。

我假设我没有对服务器上的这些文件夹的访问权限,就像我在本地运行时一样。

任何想法如何访问这些文件夹? P.S.服务器在Unix上运行。

回答:

首先一个小错误:

src='assets\\images\\folder.png' 

应该

src='assets/images/folder.png' 

然后File.listFiles可以在某些情况下返回null。

的文件名必须区分大小写,路径通过/分离。 看到第一个小错误,这可能就是这种情况。

如果您在战争中部署文件,则必须配置TomCat以解压缩战争压缩文件。轻松检查。

如果您上传文件,则文件夹和文件权限必须正常。

回答:

从https://docs.oracle.com/javase/8/docs/api/java/io/File.html#listFiles--

Returns:

An array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname. The array will be empty if the directory is empty. Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.

以上是 为什么在访问Tomcat上的文件时使用空指针(使用HttpServlet)? 的全部内容, 来源链接: utcz.com/qa/259457.html

回到顶部