如何获取WEB-INF/class文件夹下的资源路径(java ee WEB动态项目)
我在Eclipse中开发web动态项目。一个名为“users.txt”的文件位于classes文件夹(WEB-INF/classes/users.txt)下 如何在类(基类,而不是servlet类)中获取此文件的相对路径?我将使用该路径附加几行文本 克里斯蒂安:这是阅读的准则。问题是我不知道如何创建对象,以便在具有相对路径的同一文件中写入(输出)如何获取WEB-INF/class文件夹下的资源路径(java ee WEB动态项目),java,servlets,Java,Servlets,我在Eclipse中开发web动态项目。一个名为“users.txt”的文件位于classes文件夹(WEB-INF/classes/users.txt)下 如何在类(基类,而不是servlet类)中获取此文件的相对路径?我将使用该路径附加几行文本 克里斯蒂安:这是阅读的准则。问题是我不知道如何创建对象,以便在具有相对路径的同一文件中写入(输出) public Products(){ try{ InputStream in = getClass().getClassLoa
public Products(){
try{
InputStream in = getClass().getClassLoader().getResourceAsStream("products.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
readProducts(br);
in.close();
br.close();
}catch(Exception e){
System.out.println("File doesn't exists");
}
}
public void readProducts(BufferedReader in) throws NumberFormatException, IOException{
String id="";
String name="";
double price=0;
StringTokenizer st;
String line;
while((line=in.readLine())!=null){
st=new StringTokenizer(line,";");
while(st.hasMoreTokens()){
id=st.nextToken();
name=st.nextToken();
price=Double.parseDouble(st.nextToken());
}
products.put(id,new Product(id,name,price));
}
}
一般来说,您不应该依赖于修改web应用程序目录中的文件 原因之一是servlet容器没有义务将
.war
文件提取到fs,理论上,它可以从内存中运行web应用程序。是的,Tomcat和大多数容器都会解包.war
,但JavaEE规范中没有任何规定必须这样做
无论如何,如果您认为这值得冒险,您可以使用它来获取webapp目录中文件的位置
这应该是这样的:
myfile
(应该位于与.war
中的WEB-INF
相同的文件夹中)
请注意,为了使此功能正常工作,您应该能够通过请求获取文件,例如:
http://://myfile
(有关详细信息,请参阅方法文档)您是否可以发布一些代码至少您到目前为止尝试了什么?您正在错误的方向上寻找解决方案。您不应该在运行时写入部署文件夹,更不用说部署类路径了。将文件放在部署文件夹外的固定位置。额外的好处是,您当前的问题可以通过这种方式立即得到解决。顺便说一下,通常的做法是使用SQL数据库来处理这类内容。