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,读取,外部资源
0
投稿

猜你喜欢

  • JavaWeb简单文件上传流程的实战记录

    2023-04-02 09:14:59
  • Android实现自定义带文字和图片Button的方法

    2021-06-20 17:13:50
  • 详解Java中对象池的介绍与使用

    2023-07-25 13:13:48
  • 详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置)

    2022-04-09 23:45:14
  • C#中获取、生成随机数的三种方法

    2022-02-24 07:48:12
  • java interface的两个经典用法

    2021-08-17 06:20:56
  • C++实现简单酒店管理系统

    2021-07-31 13:52:40
  • 关于QueryWrapper,实现MybatisPlus多表关联查询方式

    2021-10-15 07:24:59
  • android实现点击按钮控制图片切换

    2022-10-16 02:38:55
  • C#实现让窗体永远在窗体最前面显示的实例

    2022-09-25 21:40:17
  • Spring Security Remember me使用及原理详解

    2023-10-28 04:59:56
  • IDEA设置背景为自定义照片的操作方法

    2022-12-28 09:13:08
  • SpringBoot拦截 器如何获取http请求参数

    2023-11-28 19:40:48
  • 深入浅析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
  • asp之家 软件编程 m.aspxhome.com