gpt4 book ai didi

java - 应用程序根目录中的相对路径 - Java Web 应用程序

转载 作者:行者123 更新时间:2023-11-28 22:11:59 24 4
gpt4 key购买 nike

我正在努力获取我放置在 Web 根文件夹中的 fileroot 目录的相对路径。我试图从类访问此目录以通过 Web 服务 返回其中的文件名。该文件夹包含图像和 XML 文件。

这是从展开的 .WAR 文件中看到的我的项目结构 -

我的项目
- 文件根目录
- CSS
- ...
- WEB-INF
|--类(class)

当我在本地驱动器上使用硬编码的绝对路径来读取目录中的文件时,我能够让它工作。但是,我需要它在不可能使用绝对路径的 Web 服务器上工作。

我需要从我的类(class)中访问这个文件夹,以便能够对 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;
}
}

f.listFiles(directoryFilter) 返回 null 时,我得到了一个空指针异常,因此我怀疑路径。

问题 1,如何获取类文件中的应用程序根路径?
问题 2,将目录放在应用程序根目录中是否正确?或者我应该把它放在驱动器上的另一个位置吗?

P.S: 我之前写了一个 Web 应用程序,它读取存储在类似于 this question 的类路径中的 .properties 文件。 .但是,这对于大量文件来说似乎不是一个好主意

最佳答案

在应用程序服务器上,默认路径是启动服务器的路径(即启动服务器时所在的文件夹)或 bin 文件夹。所以目录和文件应该在里面。一种快速检查您所在路径的方法是打印或记录 f.getAbsolutePath() 的结果,这将告诉您服务器默认指向哪个文件夹。

您正常打开文件 (new File(...)) 而不是作为资源,因此不使用资源路径或类路径。

在处理应用程序服务器时,最好避免使用默认路径,因为它很容易更改。要么有一个系统属性或等效的定义文件将被搜索的位置,要么,如果你要发送你想与应用程序一起阅读的文件,将它放在 WAR 中并将其作为资源打开:

YourClass.class.getResourceAsStream("/...");

YourClass.class.getResource("/...");

关于java - 应用程序根目录中的相对路径 - Java Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com