java project 和 javaWeb的读取文件路径问题(整理自百度经验,有空验证下)
2015-04-18 20:31
387 查看
总结:
1. 从工程根目录开始的路径直接读取
File f = new File(“1.txt”),或者写成这样:File f = new File(“./1.txt”);
./,表示工程根目录,可以省略!
这里不要使用File f = new File(“../1.txt”);
2. 通过字节码对象读取(避免)
在Hello.java中:String f = Hello.class.getResource(“/4.txt”).getPath();
这种以“/”开头的是以绝对路径方式读取,意思是从bin目录下开始读取4.txt。
如果写成这样:String f = Hello.class.getResource(“4.txt”).getPath();
这种不以“/”开头的是以相对路径方式读取,意思是从当前类所在的目录下开始读取4.txt。
3. 通过classloader读的话,它只会从classpath下开始读取(不是class位置),并且java
project不能以“/”开头,javaWeb以不以“/”开头路径相同。
3.1、当前类名.class.getResource()的返回值类型是URL;同时还有一个方法:当前类名.class.getResourceAsStream(),它的返回值类型是InputStream,是一个字节读取流。在开发中可以根据需要选择相应的方法。
3.2、要读取文件,文件首先必须真实存在,要不然返回的URL就等于Null。
4. 项目最终要部署在web服务器中,文件只能使用绝对路径来读取
getServletConfig().getServletContext().getRealPath(“/WEB-INF/2.txt”);这种方式只是获取文件的路径字符串,并不会检查是否真的存在这样一个文件。“/WEB-INF/2.txt”换成“WEB-INF/2.txt”,路径是一样的。
通过ServletContext对象可以获取web工程根目录及其子目录(包括WEB-INF、classes等)所有文件的绝对路径。
4.1如果文件位于classpath(也就是classes目录)下,我们还可以通过另两种方式来读取。
1、通过字节码对象来读
这种方式与上边Java Project中通过字节码对象读取类路径下文件的方式相同,可参照上边的2。
2、通过类加载器来读
这种方式与上边Java Project中通过classloader读取类路径下文件的方式基本相同,可参照上边的3。
唯一不同的是: Java Project中通过classloader读的话,它只会从classpath下开始读取,并且不能以“/”开头。而在JavaWeb Project中,可以是相对路径,也可以是绝对路径,也就说你加不加“/”开头效果是一样的。
===Java Project和JavaWeb Project,通过classloader读的话,都不要加“/”开头就不会有问题了。
1. 从工程根目录开始的路径直接读取
File f = new File(“1.txt”),或者写成这样:File f = new File(“./1.txt”);
./,表示工程根目录,可以省略!
这里不要使用File f = new File(“../1.txt”);
2. 通过字节码对象读取(避免)
在Hello.java中:String f = Hello.class.getResource(“/4.txt”).getPath();
这种以“/”开头的是以绝对路径方式读取,意思是从bin目录下开始读取4.txt。
如果写成这样:String f = Hello.class.getResource(“4.txt”).getPath();
这种不以“/”开头的是以相对路径方式读取,意思是从当前类所在的目录下开始读取4.txt。
3. 通过classloader读的话,它只会从classpath下开始读取(不是class位置),并且java
project不能以“/”开头,javaWeb以不以“/”开头路径相同。
3.1、当前类名.class.getResource()的返回值类型是URL;同时还有一个方法:当前类名.class.getResourceAsStream(),它的返回值类型是InputStream,是一个字节读取流。在开发中可以根据需要选择相应的方法。
3.2、要读取文件,文件首先必须真实存在,要不然返回的URL就等于Null。
4. 项目最终要部署在web服务器中,文件只能使用绝对路径来读取
getServletConfig().getServletContext().getRealPath(“/WEB-INF/2.txt”);这种方式只是获取文件的路径字符串,并不会检查是否真的存在这样一个文件。“/WEB-INF/2.txt”换成“WEB-INF/2.txt”,路径是一样的。
通过ServletContext对象可以获取web工程根目录及其子目录(包括WEB-INF、classes等)所有文件的绝对路径。
4.1如果文件位于classpath(也就是classes目录)下,我们还可以通过另两种方式来读取。
1、通过字节码对象来读
这种方式与上边Java Project中通过字节码对象读取类路径下文件的方式相同,可参照上边的2。
2、通过类加载器来读
这种方式与上边Java Project中通过classloader读取类路径下文件的方式基本相同,可参照上边的3。
唯一不同的是: Java Project中通过classloader读的话,它只会从classpath下开始读取,并且不能以“/”开头。而在JavaWeb Project中,可以是相对路径,也可以是绝对路径,也就说你加不加“/”开头效果是一样的。
===Java Project和JavaWeb Project,通过classloader读的话,都不要加“/”开头就不会有问题了。
相关文章推荐
- java直接读取客户端txt文件 + JavaWeb中读取文件资源的路径问题
- java读取类路径的配置文件问题
- 浅谈Java工程读取resources中资源文件路径的问题
- Java工程读取resources中资源文件路径问题
- java工程下读取配置文件的路径问题
- 关于Java读取文件操作时路径中的斜杠问题
- Java 读取Properties文件时应注意的路径问题
- java web中读取properties文件时的路径问题
- java 中文件的读取File、以及相对路径的问题
- JavaWeb中读取文件资源的路径问题 -- 转自新浪博客
- java在eclipse项目中读取文件时相对路径的问题
- JavaWeb中读取文件资源的路径问题
- java读取文件的路径问题
- javaweb 中读取文件路径问题
- java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题
- Java 读取Properties文件时应注意的路径问题
- Java或者JAR包获取读取资源文件的路径的问题总结
- 关于java读取properties文件的路径问题
- java文件读取的路径问题解惑和最佳实践,让你远离FileNotFoundException
- 解决IDE编写JAVA读取文件的路径问题