读取tomcat webapps下的一个文件

douchog_13k 2009-07-31 09:26:35
怎么通过url读取tomcat的webapps下的一个文件,文件读取的时候url怎么写?
...全文
755 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhui278681694 2009-12-11
  • 打赏
  • 举报
回复
那是路径编码的问题
用这个URLDecoder.decode(ppString)对路径进行解码
但是为什么会路径会变成D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0这种情况????
douchog_13k 2009-08-12
  • 打赏
  • 举报
回复
今天又找到另一个方法,因为在程序里用uri用文件路径可能不太方便,所以又找了一个用字符串作文件路径的方法,可以把路径中的%20等转义符给去掉。下面是acction中execute方法代码:
public String execute() throws Exception {

String str;
//URI uri=null;
String path=null;
try {
str = this.getClass().getResource("/").getPath();
str=str+"../../../test.xml";
path=URLDecoder.decode(str, "utf-8");

System.out.println(path);
File file=new File(path);
if(file.exists())
{
System.out.println("true");
}else
{
System.out.println("false");
}
}catch(Exception e)
{
e.printStackTrace();
}

return SUCCESS;
}
zl3450341 2009-08-09
  • 打赏
  • 举报
回复

this.getClass().getResource("test.xml").getPath();
believefym 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 douchog_13k 的回复:]
目录结构是这样的
%tomcat_home%/webapps/abc.xml
怎样才能在action中得到abc的路径
[/Quote]

要在action中,怕是读不到吧
CATALINA_HOME/webapps/myapp/...
class只能访问自己app下面的文件,但不包括web-inf等,

如果这样乱访问岂不是没有安全性可言
DryKillLogic 2009-08-09
  • 打赏
  • 举报
回复
学习了
teemai 2009-08-09
  • 打赏
  • 举报
回复
学习
douchog_13k 2009-08-09
  • 打赏
  • 举报
回复
得到的路径是:D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0
还是不能建立文件
File f=new File("D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0")
可能是因为有%20的原因,有没有方法 把上面的路径转换成
D:/Program Files/Apache Software Foundation/Tomcat 6.0
这样的路径。
douchog_13k 2009-08-09
  • 打赏
  • 举报
回复
参考5,6,7楼的答案,问题已经解决了,老规矩把解决的方法给大家说一下

下面是 得到文件路径的代码。
public String execute() throws Exception {
String str=this.getClass().getResource("/").toURI().toString();
str=str+"../../../abc.xml";
URI uri=new URI(str);
File f=new File(uri);

System.out.println(f.exists());
File f2=new File("/d:/1.txt");
System.out.println(f2.exists());

return SUCCESS;
}

注意:我的abc.xml是放在webapps下的。
douchog_13k 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wumingzu 的回复:]
引用 3 楼 douchog_13k 的回复:
目录结构是这样的
%tomcat_home%/webapps/abc.xml
怎样才能在action中得到abc的路径

直接在execute方法中添加一下语句获取abc.xml的路径
getServletContext().getRealPath("/WEB-INF/abc.xml")

[/Quote]
不能用,不知是不是我用struts2的原因。
Daly罗 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 douchog_13k 的回复:]
目录结构是这样的
%tomcat_home%/webapps/abc.xml
怎样才能在action中得到abc的路径
[/Quote]
直接在execute方法中添加一下语句获取abc.xml的路径
getServletContext().getRealPath("/WEB-INF/abc.xml")
jinxfei 2009-08-09
  • 打赏
  • 举报
回复
class可以访问任何操作系统系统赋予权限的文件。
并不是说只能访问app下的文件。

通常要访问自己工程下的文件,有两种方式:
1、如果要访问文件的类能够拿到request或者ServletContext,则可以使用ServletContext.getRealPath方法,这个方法的参数是相对与你的web应用的相对路径。
2、如果访问文件的类不能拿到上述信息,一般通过一个contextstartuplistener在tomcat启动的时候,讲tomcat路径信息存到一个全局的静态变量里。然后拼装出最终的路径。
javaboy2006 2009-08-08
  • 打赏
  • 举报
回复
this.getClass().getResource("test.xml").getPath();
boywp2005 2009-08-08
  • 打赏
  • 举报
回复
String path = this.getClass().getResource("").toString();
douchog_13k 2009-08-08
  • 打赏
  • 举报
回复
自己顶一下
douchog_13k 2009-08-08
  • 打赏
  • 举报
回复
目录结构是这样的
%tomcat_home%/webapps/abc.xml
怎样才能在action中得到abc的路径
douchog_13k 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zjf0921 的回复:]
在jsp中:

String filePath = getServletContext().getRealPath("/WEB-INF/abc.xml");
File file = new File(filePath);
...
[/Quote]
题目要求是把abc.xml放在tomcat下的webapps下的,
我要在后台的类中读取abc.xml.不是在jsp中。
zjf0921 2009-07-31
  • 打赏
  • 举报
回复
在jsp中:

String filePath = getServletContext().getRealPath("/WEB-INF/abc.xml");
File file = new File(filePath);
...

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧