[英]Can't access file in Java resources folder from Tomcat server
我正在努力讓我的簡單 Tomcat 應用程序正常工作。
我有 csv 文件放在 src/main/resources/cities.csv
在我的測試主要方法中,一切順利。 但是,當我使用 servlet 中的方法引用它時,我得到:java.nio.file.NoSuchFileException
文件操作:
public class FileOparations {
static private final Path path = Paths.get("src/main/resources/cities.csv");
public static List<City> getCitiesList() {
return getCitiesStream().collect(Collectors.toList());
}
public static Stream<City> getCitiesStream() {
try {
return Files.readAllLines(path)
.stream()
.skip(1)
.map((String line) -> {
return line.split("\",\"");
})
.map((String[] line) -> {
String[] newData = new String[line.length];
for (int i = 0; i < line.length; i++) {
newData[i] = line[i].replaceAll("\"", "");
}
return newData;
})
.map((String[] data) -> {
String name = data[0];
String nameAscii = data[1];
String gps = data[2] + ":" + data[3];
String country = data[4];
String adminName = data[7];
String capitol = data[8];
long population;
try {
population = Long.parseLong(data[9]);
} catch (NumberFormatException e) {
population = Integer.MIN_VALUE;
}
int id = Integer.parseInt(data[10]);
return new City(name, nameAscii, id, country, gps, capitol, population, adminName);
});
} catch (IOException e) {
e.printStackTrace();
}
return Stream.empty();
}
我在 servlet 中的代碼如下所示:
protected void doGet(HttpServletRequest request, HttpServletResponse response){
List<City> cities = FileOparations.getCitiesList();
request.setAttribute("cities", cities);
request.getRequestDispatcher("result.jsp").forward(request, response);
}
我很驚訝,因為我沒有通過 servlet 傳遞任何 URL,我想從 Java 調用 static 方法。方法 getCitiesList 調用 stream,映射並返回准備使用列表。
嘗試使用getServletContext() :
String relativePath = "/resources/cities.csv";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
相對路徑將是目錄的路徑,從您的 tomcat 中的 WAR 文件展開。因此在構建之前,它應該在 src/main/webapp/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.