我正在努力獲取我已放置在Web根文件夾中的fileroot
目錄的相對路徑。我試圖從一個類訪問這個目錄,通過Web Service
返回文件名。該文件夾包含圖像和XML文件。應用程序根目錄中的目錄的相對路徑 - Java Web應用程序
這裏是我的項目結構從爆炸.WAR
文件中看到 -
MyProject的
- fileroot
- CSS
- ...
- WEB-INF
| --classes
當我在本地驅動器上使用硬編碼的絕對路徑來讀取目錄上的文件時,我能夠得到此工作。但是,我需要這個工作在絕對路徑不可能的Web服務器上。
我需要從我的課程中訪問此文件夾,以便能夠在XML上應用一些處理,同時能夠從網頁的文件夾提供圖像。
下面是讀取目錄編寫的代碼 -
package com.xyz.executor;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
/**
*
* @author AJ
*/
public class GetDirectories {
public String basePath = "/fileroot";
public String directoryName;
public GetDirectories() {
}
public GetDirectories(String DirectoryName) {
this.directoryName = DirectoryName;
basePath = basePath + "/" + directoryName;
}
public ArrayList<String> read() {
ArrayList<String> DirectoryList = new ArrayList<>();
try {
File f = new File(basePath); // current directory
FileFilter directoryFilter = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
File[] files = f.listFiles(directoryFilter);
for (File file : files) {
if (file.isDirectory()) {
System.out.print("directory:");
DirectoryList.add(file.getName());
} else {
System.out.print(" file:");
}
System.out.println(file.getName());
}
} catch (Exception e) {
System.out.println("Exception occurred (GetDirectories) : " + e.toString());
e.printStackTrace();
System.out.println("**************************");
}
return DirectoryList;
}
}
我得到一個null pointer exception
爲f.listFiles(directoryFilter)
回報null
因爲其中我懷疑有與路徑的問題。
問題1,如何獲取類文件中的應用程序根路徑?
問題2,我是通過將目錄放在應用程序根目錄下來做正確的事情嗎?或者我應該把它放在驅動器的另一個位置?
P.S:我之前編寫了一個web應用程序,它讀取存儲在類路徑中的.properties
文件,類似於this question。但是,對於批量數量的文件,這似乎不是一個好主意
您是否嘗試過的文件夾添加到類路徑?對於Web應用程序,所有相對可訪問的文件都從Web應用程序上下文的根目錄開始。 – MadConan
你嘗試過context.getRealPath()嗎? – Ouney
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String) - 但你必須實現一個'Servlet',並將這些信息傳遞給你的類作爲參數。即它不能從POJO內部訪問。 –