java读取文件路径问题

Filef=newFile("E://work//listenerCountService//src//META-INF//weibo.xml");//Filef=new... File f = new File("E://work//listenerCountService//src//META-INF//weibo.xml"); // File f = new File(getClass().getResource("META-INF/weibo.xml").getPath()); //File f = new File(f.getPath().toString());后面的不对,不能用绝对路径,如果设置成tomcat下直接启动,应该怎么设置路径啊
文件放到了 src下面的MEAT-INF 下
展开
 我来答
451177500
推荐于2017-09-23 · TA获得超过1263个赞
知道小有建树答主
回答量:946
采纳率:25%
帮助的人:473万
展开全部
在java中获得文件的路径在我们做上传文件操作时是不可避免的。

web 上运行
1:
this.getClass().getClassLoader().getResource("/").getPath();
this.getClass().getClassLoader().getResource("").getPath(); 得到的是 ClassPath的绝对URI路径。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
System.getProperty("user.dir");
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 项目的绝对路径。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

2:
this.getClass().getResource("/").getPath();
this.getClass().getResource("").getPath(); 得到的是当前类 文件的URI目录。不包括自己!
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/com/jebel/helper/
this.getClass().getResource(".").getPath(); X 不 能运行

3:
Thread.currentThread().getContextClassLoader().getResource("/").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的绝对URI路径。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
Thread.currentThread().getContextClassLoader().getResource(".").getPath() 得到的是 项目的绝对路径。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

在本地运行中
1:
this.getClass().getClassLoader().getResource("").getPath();
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 ClassPath的绝对URI路径。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
this.getClass().getClassLoader().getResource(".").getPath(); X 不 能运行
2:
this.getClass().getResource("").getPath();
this.getClass().getResource(".").getPath(); 得到的是当前类 文件的URI目录。不包括自己!
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper/
/D:/myProjects/hp/WebRoot/WEB-INF/classes/ 得到的是 ClassPath的绝对URI路径。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes

3:
Thread.currentThread().getContextClassLoader().getResource(".").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的绝对URI路径。。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
Thread.currentThread().getContextClassLoader().getResource("/").getPath() X 不 能运行

最后
在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。
还有request.getContextPath(); 在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic服务器,项目内部并没有文件结构的概念,用这种方式是始终得到null,获取不到路径,目前还没有找到具体的解决方案。
嘟爷他巴
推荐于2017-09-23 · TA获得超过267个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:177万
展开全部

如果你使用的是eclipse,请检查编译是否禁止了非.class文件的编译输出,如果这项没有问题。那么 src/META-INF/*.* 文件自动输出到 /WEB-INF/classes/META-INF/*.*。也就是说,最终资源文件在 WEB-INF/classes/META-INF/weibo.xml

使用JAVA 类获取路径:

File f = new File(getClass().getResource("/META-INF/weibo.xml").getPath());

获取InputStream:

InputStream input = getClass().getResourceAsStream("/META-INF/weibo.xml");

另外,JAVA项目的标准协定(习惯)中的源代码目录结构是:

src
 |-- main
 |   |-- java       JAVA文件
 |   |-- resources  资源文件
 |-- test
     |-- java       TEST JAVA文件
     |-- resources  TEST 资源文件

输出的目录结构是:

target
  |-- classes    main/java, main/resource 输出目录
  |-- test-classes test/java, test/resources 输出目录
追问
我现在就是读取java项目下的这个文件,不是web项目,这个配置文件只在这个java项目下使用。应该怎么读。如果我V吧配置文件直接放到web项目的src下,其他java项目如果要用的话,应该怎么读取??
追答
也是一样的,如果是普通JAVA项目,在生成classes 的目录下
使用JAVA读取classes 目录下的资源文件都是一样的,Class#getResource(String)
classes 目录或者 打成jar包也一样,都属于 classes 范畴。
如果其他项目需要使用共用的配置,那部署到服务器时,使用一个公用的目录(例如:/www/config/weibo.xml),项目里写配置读取,配置绝对路径读取。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
monical2
2014-07-28 · TA获得超过772个赞
知道小有建树答主
回答量:730
采纳率:60%
帮助的人:389万
展开全部
使用getResource这个method时,将资源文件放在 classpath下,默认的就是对应工程的
apache-tomcat-6.0.35\webapps\我的工程名\WEB-INF\classes
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式