java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)
https://blog.csdn.net/my__sun_/article/details/74450241
读取文件的写法,相对路径
在当前的目录结构中读取test.txt的有四种写法
- 简单粗暴的 File file = new File(“src/test.txt”)
- 使用类的相对路径
- 使用当前线程的类加载器
- 读取web工程下的文件 使用getRealPath()读取

File file = new File("src/test.txt");
File file = new File(TestRelativePath.class.getResource("/test.txt").getFile());
File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
File file = new File(getServletContext().getRealPath("/WEB-INF/classes/test.txt"));
下面我来一一介绍:
简单粗暴的 File file = new File(“src/test.txt”);
@Test
/**
* 这种方法 “” 空代表的是 这个Java项目 TestSomeTechnology 由于实际项目在打包后没有src目录 所以这种方法不常用
*/
public void testMethod1() throws IOException{
File file = new File("src/test.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
使用类的相对路径
TestRelativePath.class.getResource(“/test.txt”).getFile()
@Test
/**
* 使用类的相对路径
* 这种方法 “/” 代表的是bin。 src文件夹和resources 文件夹下的的东西都会被加载到bin下面 因为这两个文件被配置为了source
*/
public void testMethod2() throws IOException{ File file = new File(TestRelativePath.class.getResource("/test.txt").getFile());
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
使用当前线程的类加载器
Thread.currentThread().getContextClassLoader().getResource(“test.txt”).getFile()
@Test
/**
* 这种是通过当前线程的类加载器
* 这种方法 “ ” 空代表的是bin 。 于是就直接填写test,文件夹下的的东西都会被加载到bin下面,因为这两个文件被配置为了source
*/
public void testMethod3() throws IOException{ File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
if ((len=br.readLine())!=null){
System.out.println(len);
}
}
读取web工程下的文件 使用getRealPath()读取
目录如下 :

读取 index.jsp
@WebServlet(name = "TestServlet",urlPatterns = "/TestServlet")
public class TestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
} /**
* web工程的根目录是 webRoot, 使用 “/” 代表webroot webroot下面有index.jsp文件
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
File file = new File(getServletContext().getRealPath("/index.jsp"));
BufferedReader br = new BufferedReader(new FileReader(file));
String len = null;
while ((len=br.readLine())!=null){
System.out.println(len);
}
}
}
读取 test.txt文件
不过如果想读取test.txt 的话 我们可用用上面的方式
File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
也可以使用 getRealPath()
不过由于是以 webroot为根目录 我们需要从classes里面读:idea的classes等价于esclipse的classpath 。classes说明:

代码:
File file = new File(getServletContext().getRealPath("/WEB-INF/classes/test.txt"));
getResourceAsStream()方法详解
getResourceAsStream()用法与getResouce()方法一样的,用getResource()取得File文件后,再new FileInputStream(file) 与 getResourceAsStream() 的效果一样。。
两个代码效果一样
InputStream inputStream1 = new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile()));
InputStream inputStream2 = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");
java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)的更多相关文章
- Java FileReader使用相对路径读取文件
Java FileReader使用相对路径读取文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 在进行编程时需要时常更换主机进行测试,如果使用绝对路径则需要经常更改,为此使用相对路径是一个 ...
- java中的IO流读取文件
1 InputStream类和OutputStream类 InputStream.read()方法从文件中读取一个字节(0-255),然后将此字节转换成对应的整数返回.假设一个文件的编码为utf-8编 ...
- java 使用相对路径读取文件
java 使用相对路径读取文件 1.java project环境,使用java.io用相对路径读取文件的例子: *目录结构: DecisionTree |___src ...
- java中的绝对路径和相对路径
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:/xyz/test.txt 代表了test.txt文件的绝对路径.http://www ...
- C# Note5:使用相对路径读取文件
一.C#中使用相对路径读取配置文件 一般Solution的目录结构如下图所示: (如过看不到某些文件,可以点击 “显示所有文件” 图标) 方法一:由于生成的exe文件在bin\debug目录下,可以使 ...
- Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...
- Java相对路径读取文件
不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的. 项目的文件夹结构: repathtest ├─sr ...
- C#中winform使用相对路径读取文件的方法
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73b6cd0d3027fa3cf1fd579080101 ...
- web项目中从不同的路径读取文件
项目中的配置文件可以放在classpath下,webapp下获取其他任何一个指定的绝对地址,读取这些文件就从这三个地方去找.主要代码如下: private List<String> get ...
随机推荐
- [转]12种JavaScript MVC框架之比较
From : http://www.infoq.com/cn/news/2012/05/js-mvc-framework/ Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月 ...
- 百度统计数据的UV和IP为什么不一样?
相信网站站长们在每天查看百度统计数据时会发现网站的IP和UV数据时大时小,有时候IP比UV大,有时候UV比IP大,站长们可能对这些情况感到奇怪.今天就和大家分享一下UV和IP的知识,帮助大家更好地做好 ...
- UrlRewriter && IIS7
为了在动态网站获得更好的url体验,往往采用url重写技术. 比如:http://blog.xujif.com/?p=268 可以重写为 http://blog.xujif.com/archives/ ...
- 第四章 dubbo内核之aop源码解析
ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class); final P ...
- CentOS6.4下安装Chrome
因为蛋疼的glibc问题,(我就纳闷了,为何CentOS支持的glibc的版本就那么低呢,害得我至今还没把genymotion安装上), Chrome浏览器一直没安装上,不过终于找到了解决方案,安装派 ...
- iOS开发-View中frame和bounds区别
开发中调整View的时候的经常会遇到frame和bounds,刚开始看的时候不是很清楚,不过看了一下官方文档,frame是确定视图在父视图中的位置,和本身的大小,bounds确定可以确定子视图在当前视 ...
- Context Application 使用总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- IntelliJ IDEA windows与mac下常用快捷键
摘自: http://www.th7.cn/Program/java/201604/817219.shtml 1.找文件找代码找引用 shif双击在项目的所有目录查找 ctrl+f(mac下:comm ...
- kaggle预测
两个预测kaggle比赛 一 .https://www.kaggle.com/c/web-traffic-time-series-forecasting/overview Arthur Suilin• ...
- 【Python】无须numpy,利用map函数与zip(*)函数对数组转置(转)
http://blog.csdn.net/yongh701/article/details/50283689 在Python的numpy中,对类似array=[[1,2,3],[4,5,6],[7,8 ...