2017-10-11 12 views
0

私は、JSPプロジェクトのルートディレクトリからフォルダのリストを取得しようとしています。子フォルダへのリンクとフォルダのサイズをテーブルに表示します。以下のコードは、WebContentフォルダー内のディレクトリーのリストを取得することです。(HttpServletを使用して)Tomcat上のファイルにアクセスするとき、なぜnullポインタを取得しますか?

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エラー(nullポインタ例外)を取得:フォルダアレイが子フォルダで初期化されていないことを私に伝えます

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

を。

ローカルで実行しているときと同じように、サーバー上のこれらのフォルダに同じアクセス権がないと仮定しています。

これらのフォルダにアクセスする方法はありますか? P.P.サーバーはUnix上で動作しています。

+0

"absoultepath"の値を記録し、サーバーファイルシステムに正確なパスのフォルダがあることを確認します。問題が何であるかを知っているので、デバッグして参照してください。 – kosa

答えて

1

からの最初の小さなエラー:

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

はその後File.listFilesは、いくつかのケースではnullを返すことができ

src='assets/images/folder.png' 

でなければなりません。

ファイル名は大文字と小文字が区別/によって分離された経路なければなりません。 最初の小さなエラーを見て、これがここに当てはまるかもしれません。

war内にファイルを展開する場合は、warzipを解凍するようにTomCatを設定する必要があります。簡単にチェック。

ファイルをアップロードする場合、フォルダとファイルの権利は大丈夫です。

+0

はい、私はコードに行って、私のファイルセパレータをチェックしました。私はそれらをWindowsでは '\'、UNIXでは '/'ではありませんでした。これは私の問題を解決しました。ありがとう。 –

関連する問題