[英]Relative path to a directory in application root - Java Web Application
我正在努力獲取放置在Web根文件夾中的fileroot
目錄的相對路徑。 我試圖從一個類訪問此目錄,以通過Web Service
返回其中的文件名。 該文件夾包含圖像和XML文件。
這是我從分解的.WAR
文件中看到的項目結構-
我的項目
-文件根
-CSS
-...
-網絡信息
| --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 ,通過將目錄放在應用程序根目錄中,我做對了嗎? 還是應該將其放置在驅動器上的其他位置?
PS:我之前編寫了一個Web應用程序,該應用程序讀取類似於此問題的類路徑中存儲的.properties
文件。 但是,對於大量文件來說,這似乎不是一個好主意
在應用程序服務器上,默認路徑是啟動服務器的路徑(即,啟動服務器時所在的文件夾)或bin
文件夾。 因此,目錄和文件應位於其中。 一種檢查您所在路徑的快速方法是打印或記錄f.getAbsolutePath()
的結果,這將告訴您服務器默認使用的文件夾。
您正在正常打開文件( new File(...)
),而不是將其作為資源打開,因此未使用資源路徑或類路徑。
處理應用程序服務器時,最好避免使用默認路徑,因為它很容易更改。 具有定義要在何處搜索文件的系統屬性或等效項,或者,如果要與應用程序一起運送要讀取的文件,請將其放在WAR中並作為資源打開:
YourClass.class.getResourceAsStream("/...");
要么
YourClass.class.getResource("/...");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.