关闭

JAVA读取外部资源的方法

标签: java
192人阅读 评论(0) 收藏 举报
分类:

转:

在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下.

1.从当前的工作目录中读取:

  1. try
  2.             BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("wkdir.txt"))); 
  3.             String str; 
  4.             while ((str = in.readLine()) !=null) { 
  5.                 System.out.println(str); 
  6.             } 
  7.             in.close(); 
  8.         } catch (IOException e) { 
  9.         } 

2,从classpath中读取(读取找到的第一个符合名称的文件):

  1. try
  2.             InputStream stream = ClassLoader.getSystemResourceAsStream("fileinjar.txt"); 
  3.             BufferedReader in = new BufferedReader(new InputStreamReader(stream)); 
  4.             String str; 
  5.             while ((str = in.readLine()) !=null) { 
  6.                 System.out.println(str); 
  7.             } 
  8.             in.close(); 
  9.         } catch (IOException e) { 
  10.         } 

3,从classpath中读取(读取找到的所有符合名称的文件,如Spring中带有classpath*:前缀的情况就会从classpath中遍历):

  1. try
  2.  
  3.             Enumeration resourceUrls = Thread.currentThread().getContextClassLoader().getResources("fileinjar.txt"); 
  4.  
  5.             while (resourceUrls.hasMoreElements()) { 
  6.                 URL url = (URL) resourceUrls.nextElement(); 
  7.                 System.out.println(url); 
  8.  
  9.                 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
  10.                 String str; 
  11.                 while ((str = in.readLine()) !=null) { 
  12.                     System.out.println(str); 
  13.                 } 
  14.                 in.close(); 
  15.  
  16.             } 
  17.  
  18.         } catch (IOException e) { 
  19.         } 

4,从URL中读取:

  1. try
  2.  
  3.             URL url = new URL("http://blog.csdn.net/kkdelta"); 
  4.             System.out.println(url); 
  5.  
  6.             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
  7.             String str; 
  8.             while ((str = in.readLine()) !=null) { 
  9.                 System.out.println(str); 
  10.             } 
  11.             in.close(); 
  12.  
  13.         } catch (IOException e) { 
  14.             e.printStackTrace(); 
  15.         } 

5,web项目从web-inf文件夹读取(通过得到ServletContext读取,可以在servlet或者能够得到request的类中使用):

  1. try
  2.  
  3.             URL url = (URL) getServletContext().getResource("/WEB-INF/webinffile.txt"); 
  4.             // URL url = (URL)req.getSession().getServletContext().getResource("/WEB-INF/webinffile.txt"); 
  5.             System.out.println(url); 
  6.  
  7.             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
  8.             String str; 
  9.             while ((str = in.readLine()) !=null) { 
  10.                 System.out.println(str); 
  11.             } 
  12.             in.close(); 
  13.  
  14.         } catch (IOException e) { 
  15.             e.printStackTrace(); 
  16.         } 

以上代码在eclipse环境中运行测试过.不过最近在用JUnit的时候,通过ant运行JUnit时通过ClassLoader.getSystemResourceAsStream("file.txt");的方式去找不到文件.改成 Xclass.class.getClassLoader().getResourceAsStream("file.txt");能从ant指定的classpath中找到文件.原因是ClassLoader和Xclass.class.getClassLoader()是不同的,查找的路径不一样.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5805次
    • 积分:369
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条