首页 > 开发 > Java > 正文

Java 读取外部资源的方法详解及实例代码

2024-07-13 10:05:02
字体:
来源:转载
供稿:网友

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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表