急求!在WEB应用中的普通类读取相对路径下的文件,搞不定!

dddeee 2006-02-17 12:51:39
大家好,小弟遇到了一个麻烦的问题,搞了一天没搞定,问问大家:

我有一个jsp应用,里面有一个类,初始化时需要读取另一个文本文件中的数据。所谓普通类,就是指它一个是与servlet无关的类,不在web环境中也可以使用。

在本机上,使用的绝对路径:File file = new File("C:\\data.txt"),可以读到数据文件。但放到另一台服务器中的tomcat中,由jsp调用这个类时,它再读取c:\data.txt文件肯定会失败,所以我想用相对路径的方法解决。

但是没有搞定,总是找不到路径。

我的做法是:

1.使用以下的目录结构
test
|- Reader.java
|- data.txt

但在Reader.java中使用 File file = new File("data.txt");但是找不到这个data.txt,怎么办?

2.或者将data.txt放在WEB-INF\classes下,但是怎么做才能在Reader.java中找到这个data.txt呢?我记得在struts就可以读取那国际化资源的文件



...全文
274 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgwfeng2 2006-05-08
  • 打赏
  • 举报
回复
mark
infowain 2006-02-17
  • 打赏
  • 举报
回复
String lsFile = this.getClass().getResource("/").getPath()+System.getProperty("file.separator") + "data.txt"
infowain 2006-02-17
  • 打赏
  • 举报
回复
String lsFile = this.getClass().getResource("/").getPath() + System.getProperty("file.separator") + "data.txt"
figoren 2006-02-17
  • 打赏
  • 举报
回复
直接读InputStream is = is.getClass().getResourceAsStream("test/data.txt");
polarman 2006-02-17
  • 打赏
  • 举报
回复
假设reader的包是test
把data.txt放到Reader.class相同的目录
在Reader对象中
URL url = this.getClass().getClassLoader().getResource("test/data.txt");
或URL url = this.getClass().getResource("data.txt");
String path = url.getPath();
或直接取文件流:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("test/data.txt");
或InputStream is = is.getClass().getResourceAsStream("test/data.txt");
vvpang 2006-02-17
  • 打赏
  • 举报
回复
楼上的那个就可以得到webapps的绝对路径。。

wangx1949 2006-02-17
  • 打赏
  • 举报
回复
同意楼上
String lsFile = this.getClass().getResource("/").getPath()+System.getProperty("file.separator") + "data.txt"
这样如果不行,把data.txt放到JSP的工作目录试试.

81,122

社区成员

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

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