Java 读取外部资源的方法详解及实例代码
作者:lqh 时间:2023-01-27 21:19:18
Java 读取外部资源的方法详解
在Java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下.
1.从当前的工作目录中读取:
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("wkdir.txt")));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
}
2,从classpath中读取(读取找到的第一个符合名称的文件):
try {
InputStream stream = ClassLoader.getSystemResourceAsStream("fileinjar.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(stream));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
}
3,从classpath中读取(读取找到的所有符合名称的文件,如spring中带有classpath*:前缀的情况就会从classpath中遍历):
try {
Enumeration resourceUrls = Thread.currentThread().getContextClassLoader().getResources("fileinjar.txt");
while (resourceUrls.hasMoreElements()) {
URL url = (URL) resourceUrls.nextElement();
System.out.println(url);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
}
} catch (IOException e) {
}
4,从URL中读取:
try {
URL url = new URL("http://blog.csdn.net/kkdelta");
System.out.println(url);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
5,web项目从web-inf文件夹读取(通过得到ServletContext读取,可以在servlet或者能够得到request的类中使用):
try {
URL url = (URL) getServletContext().getResource("/WEB-INF/webinffile.txt");
// URL url = (URL)req.getSession().getServletContext().getResource("/WEB-INF/webinffile.txt");
System.out.println(url);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
以上代码在eclipse环境中运行测试过.不过最近在用JUnit的时候,通过ant运行JUnit时通过ClassLoader.getSystemResourceAsStream("file.txt");的方式去找不到文件.改成 Xclass.class.getClassLoader().getResourceAsStream("file.txt");能从ant指定的classpath中找到文件.原因是ClassLoader和Xclass.class.getClassLoader()是不同的,查找的路径不一样.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
标签:Java,读取,外部资源
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JavaWeb简单文件上传流程的实战记录
2023-04-02 09:14:59
![](https://img.aspxhome.com/file/2023/9/71889_0s.png)
Android实现自定义带文字和图片Button的方法
2021-06-20 17:13:50
![](https://img.aspxhome.com/file/2023/5/137775_0s.jpg)
详解Java中对象池的介绍与使用
2023-07-25 13:13:48
详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置)
2022-04-09 23:45:14
![](https://img.aspxhome.com/file/2023/9/65799_0s.png)
C#中获取、生成随机数的三种方法
2022-02-24 07:48:12
java interface的两个经典用法
2021-08-17 06:20:56
C++实现简单酒店管理系统
2021-07-31 13:52:40
![](https://img.aspxhome.com/file/2023/9/122579_0s.jpg)
关于QueryWrapper,实现MybatisPlus多表关联查询方式
2021-10-15 07:24:59
android实现点击按钮控制图片切换
2022-10-16 02:38:55
![](https://img.aspxhome.com/file/2023/0/126770_0s.gif)
C#实现让窗体永远在窗体最前面显示的实例
2022-09-25 21:40:17
Spring Security Remember me使用及原理详解
2023-10-28 04:59:56
![](https://img.aspxhome.com/file/2023/2/80912_0s.png)
IDEA设置背景为自定义照片的操作方法
2022-12-28 09:13:08
![](https://img.aspxhome.com/file/2023/5/61645_0s.jpg)
SpringBoot拦截 器如何获取http请求参数
2023-11-28 19:40:48
![](https://img.aspxhome.com/file/2023/6/59926_0s.png)
深入浅析java中flyway使用简介
2022-06-05 20:45:45
C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法
2023-06-27 05:51:45
Spring Boot整合Kafka教程详解
2023-06-14 06:02:54
c#简单工厂、工厂方法与抽象工厂的区别分析
2021-11-30 04:39:47
Android硬件解码组件MediaCodec使用教程
2023-03-14 01:35:36
C#利用Random得随机数求均值、方差、正态分布的方法
2022-08-28 14:26:37
Java编程使用卡片布局管理器示例【基于swing组件】
2022-03-03 10:46:33
![](https://img.aspxhome.com/file/2023/3/76193_0s.jpg)