私は、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'/> "
+ "<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上で動作しています。
"absoultepath"の値を記録し、サーバーファイルシステムに正確なパスのフォルダがあることを確認します。問題が何であるかを知っているので、デバッグして参照してください。 – kosa