关于java web的new File(),如果用绝对路径就可以用,如果用相对路径就有问题了,没把错也读不出来

关于java web的new File(),如果用绝对路径就可以用,如果用相对路径就有问题了,没把错也读不出来。
这个是我用MyEclipse的目录结构,我想用这个"ReadTxt.java"来读取WebRoot目录下的txt下的book.txt。
要怎么用相对路来读取到这个文件呢。要线等。。。
这样子是没问题的。但是用绝对路径的话,以后有什么变化就得改这些路径,有点麻烦。。。现在要把29行的绝对路径改成相对路径

呵呵,你还不懂servlet的容器吧。首先,你的ReadTxt.java编译后生成的class文件是在web-inf下class这个文件夹下,也就是说web-inf下还有一个class文件夹,这个知道的吧,web容器加载class文件的时候,就是加载这个文件夹下的class文件。所以,你可以用class加载器得到这个class文件夹的路径,得到这个路径了你爱放book.txt在哪就放在哪。一般来说都是这样做的,如果要读取一些文件,一般是将这些文件放在class文件夹下,然后用class加载器来取路。
ClassLoader cl = ReadTxt.class.getClassLoader();
String Path = cl..getResource("txt/book.txt").toURI().getPath();
记得将txt/book.txt放到class文件夹下。
慢慢领悟,你行的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-12

你试试:

../txt/book.txt

追问

谢谢,还是不行。。。


这样子就没问题,txt文件都是存在的

追答..//f//WebRoot//txt//三国演义.txt

亲测可用,我刚试了下,你再看看。

第2个回答  2013-11-12
你把那段源代码贴出来看一下追问

这样子是没问题的。但是用绝对路径的话,以后有什么变化就得改这些路径,有点麻烦。。。现在要把29行的绝对路径改成相对路径 

追答

如果你用的是tomcat服务器 默认的根路径是%TOMCAT_HOME%/webapps/project_name/WEB-INF/classes/
你可以把txt文件夹放到classes目录下 然后把29行改成
String txt[] = qq.readLogInfo(ReadTxt.class.getResource("/")+"/txt/三国演义.txt").toString().split("正文");

第3个回答  2013-11-12
java开发这样的问题多了去了 何必纠结自己呢 一般都是用绝对路径的。 手打哦 采纳吧追问

绝对路径是可以,但把网站发布出去时又得去改这个路径,不是有点麻烦吗???

第4个回答  2013-11-12
直接 text/book.txt追问

这样子就行,但是text/book.txt就不行,这两个文件都有存在的。。。

关于java web的new File(),如果用绝对路径就可以用,如果用相对路径就有...
首先,你的ReadTxt.java编译后生成的class文件是在web-inf下class这个文件夹下,也就是说web-inf下还有一个class文件夹,这个知道的吧,web容器加载class文件的时候,就是加载这个文件夹下的class文件。所以,你可以用class加载器得到这个class文件夹的路径,得到这个路径了你爱放book.txt在哪就放在哪。...

java中File类,为什么用new File指向的文件老是为空?代码如图,இ௰...
获取当前类的加载目录,如果有“/”,获取当前类的所在工程路径 this.getClass().getResource(“”).getPath()this.getClass().getResource(“/”).getPath()项目的绝对路径 this.getClass().getClassLoader().getResource(“.”).getPath();另一种获取当前的classpath的绝对uri路径的方法 Threa...

java里绝对路径和相对路径的区别
根目录所对应的绝对路径:request.getRequestURI()文件的绝对路径 :application.getRealPath(request.getRequestURI());当前web应用的绝对路径 :application.getRealPath("\/");取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()3.2 Servlet中获得当前应用的相对路径和绝对路径根...

java路径问题:在工具类中用main方法测试没有问题,在其他类中药调用却出...
path输入修改为绝对路径就行了,用相对路径要看运行时所在的路径对不对,肯定有问题的。src\\ftplog\\2014-09-30.txt可以修改为<src所在的目录>\\src\\ftplog\\2014-09-30.txt String path = "src\/"+logPath+date+".txt";这一段改成绝对路径就ok。

java中,关于new File(path)的一个疑问?
file 是File 的一个实例对象 里面存放的是通过path路径获取到的所有关于文件的相信信息 并不是文件 也不是路径 而是一个对象

java中用父路径和子路径创建file对象有什么用呢
是相对路径和绝对路径的问题 在Java中用File对象来创建文件时,绝对路径一般是不会出现什么问题的,如果使用相对路径,则有可能出现意向不到的问题,以下主要是针对相对路径进行解释 1、Eclipse下的Java Project环境 目录结构如下所示:JavaTest src com.ccse.TestDemo.java resource text.txt String file...

JAVA new File可以访问网络路径吗
不可以,我之前就遇到过这样的问题,只能先获取url在服务器端的真实路劲(getRealPath())或者相对路径,然后用这个路径作为参数new File(path);不能直接用url作为参数。

java里绝对路径和相对路径的区别是什么?
按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”\\x0d\\x...

eclipse中java中new File("文件名")为什么是建立在java项目的根目录下...
因为你只是文件名,而不是绝对路径,所以这个时候按照相对路径处理 相当于\/fileName 所以就到了项目的根目录下

如何去掉javaweb项目中没有用到的文件
肯定会没的,你设置的的上传文件目录是相对路径,也就是把文件传到你的部署在Tomcat你的项目文件中,如果可以,你可以尝试使用绝对路径,将文件上传到指定的文件夹,或者每次重新部署的时候把上传的文件拷贝出来

相似回答