[转]JAVA读取外部资源的方法

摘要:
=null){System.out.println(str);}in.close();}catch(IOExceptione){}3,从类路径读取(读取与找到的名称匹配的所有文件,例如Spring中带有classpath*:前缀的文件,然后遍历类路径):尝试{EnumerationresourceUrls=Thread.currentThread().getContextClassLoader().get-Resources(“fileinjar.txt”);while(resourceUrls.hasMoreElements()){URLurl=(URL)resourceUrls.nextElement();System.out.println(URL); BufferedRead erin=newBufferedReader(newInputStreamReader(url.openStream()));字符串字符串;while((str=in.readLine())!=null){System.out.println(str);}in.close();}}Catch(IOException){}4,从URL读取:try{URLurl=newURL(“http://blog.csdn.net/kkdelta“);System.out.println(url);BufferedReaderin=newBufferedReader(newInputStreamReader(url.openStream()));Stringstr;while((str=in.readLine())!

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

出处:http://www.iteye.com

免责声明:文章转载自《[转]JAVA读取外部资源的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# 匿名委托、匿名方法、匿名对象、Lambda表达式USB3.0测试和使用说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java中子类继承父类程序执行顺序问题

Java中,new一个类的对象,类里面的静态代码块、非静态代码、无参构造方法、有参构造方法、类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证。比如新建一个测试父类。 publicclassFatherTest { privateString name; FatherTest(){ System.out.println("--父类的无参...

修改 android的 开机 音乐

接 修改动画 的 教程, 接下来我们给系统添加开机声音 由于动画是在BootAnimation播放的,所以我们的声音肯定也在这个类中做,照猫画虎 首先在BootAnimation.h添加方法的声明和头文件的引用 #include <media/AudioSystem.h>#include <media/mediaplayer.h>...

CefSharp 浏览器核心,爬虫

CefSharp是什么 A framework for embedding web-browsing-like capabilities to a standard .NET application (WPF or Windows Forms). A set of high-level custom controls to make it reasona...

JUC 并发编程--04 常用的辅助类CountDownLatch , CyclicBarrier , Semaphore , 读写锁 , 阻塞队列,CompletableFuture(异步回调)

CountDownLatch 相当于一个减法计数器, 构造方法指定一个数字,比如6, 一个线程执行一次,这个数字减1, 当变为0 的时候, await()方法,才开始往下执行,, 看这个例子 CyclicBarrier 的用法, 字面意思:循环栅栏, 这是构造方法, 第一个参数parties 是线程数量, 第二个参数是barrierAction:...

socket.io建立长连接

   socket.io是基于node.js,在命令行里输入npm socket.io下载模块,用node.js搭建后台 示例代码,客户端 1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <meta charset="UTF-8"> 5...

UMeditor百度富文本编辑器的使用

批量上传的图片在线管理没法查看图片 是因为jar包本身的Bug,这里暂时做了个替换展示。就是找到Img.js 然后搜索 img.set 替换下就好了 var url=list[i].url ; url=url.replace("D:/JavaWorkSpace/.metadata/.me_tcat7/webapps/WebEUEdit",""); //i...