JAVA读取外部资源的方法

转载 2013年12月04日 19:09:24

转:

在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()是不同的,查找的路径不一样.

相关文章推荐

VisualNet广电网络资源管理系统共享外部数据的方法

目前在我们广电局中已经有了一套早期基于Access开发的20多万用户的信息管理系统,因一直很稳定,所以也没更换其它系统。里面目前有各种用户数据需要利用,譬如姓名、家庭住址、编号、联系电话等等。而在用V...

Unity读取内部、外部资源详解

Unity读取内部、外部资源详解unity读取资源大概分为两部分:一部分为内部资源,什么是内部资源,就是导入unity中的资源,我们称之为Asset,这部分资源unity有现成的管理方法。另外一部分是...

Android apk安装过程及Java、JNI读取安装包内assets资源文件的两种方法(附源码实例)

问题背景:在PC上的程序可以轻松使用./或不用指明,默认读取的就是程序所在路径内的文件。但在Android上,应用程序被打包成apk,程序运行时无法直接获取apk(压缩包)内的文件。但在一些特殊场合,...

java读取资源文件的N种方法

如何读取资源文件: (一) Properties props = new Properties(); props.load(new FileInputStream("db.properti...

调用外部DLL,如:DelphiC++Java的DLL的调用方法,给出代码片段?

//指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。System.Runtime.InteropServices.DllImportAttribute 有时需要写上路径的如[Dll...

Java学习 - 24种语言执行外部命令的方法

在这个例子中展示用不同语言调用外部命令的方法。觉得这个挺有意思,转来给大家看看,也许某一天你会觉得有用。 这些语言包括 Ada AppleScript C C++ C# E Forth Haskell...

java(非)静态方法,(非)静态外部类访问静态属性总结

public int a =1; public static int b =1; public void a(){}; public static void b(){}; public cl...

Java 在外部类中调用其它类的私有方法--反射(Reflection)

转载请注明来自我的CSDN博客:黄朝辉的博客 首先,我们看一下什么是反射,以下Oracle官网上对反射的说明: Reflection is commonly used by programs w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)