2017-10-11 82 views
0

我想從我的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上運行。

+0

我會記錄「absoultepath」的值,並看到服務器文件系統具有確切路徑的文件夾。你知道問題是什麼,所以調試和看看。 – kosa

回答

1

首先一個小錯誤:

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

應該

src='assets/images/folder.png' 

然後File.listFiles可以在某些情況下返回null。

的文件名必須區分大小寫,路徑通過/分離。 看到第一個小錯誤,這可能就是這種情況。

如果您在戰爭中部署文件,則必須配置TomCat以解壓縮戰爭壓縮文件。輕鬆檢查。

如果您上傳文件,則文件夾和文件權限必須正常。

+0

是的,我進入代碼並檢查了我的文件分隔符,我把它們作爲'\'作爲窗口,而不是'/'作爲unix。這解決了我的問題。謝謝。 –

相關問題