• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

java 来源:Cristian Navarrete 3次浏览

我想从我的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以解压缩战争压缩文件。轻松检查。

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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)