zoukankan      html  css  js  c++  java
  • java加载资源文件

    className.class.getResourceAsStream 用法:
    
     
    
    第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties
    
    那么,应该有如下代码:
    
    //前面没有“/”代表当前类的目录
    
    InputStream is1 = Test.class.getResourceAsStream("config.properties");
    System.out.println(is1);// 不为null
    
     
    
     
    
    第二:在Test.class目录的子目录下,例如:com.x.y 下有类Test.class ,同时在 com.x.y.prop目录下有资源文件config.properties
    
    那么,应该有如下代码:
    
    //前面没有“/”代表当前类的目录
    
    InputStream is2 = Test.class.getResourceAsStream("prop/config.properties");
    System.out.println(is2);//不为null
    
     
    
     
    
    第三:不在同目录下,也不在子目录下,例如:com.x.y 下有类Test.class ,同时在 com.m.n 目录下有资源文件config.properties
    
    那么,应该有如下代码:
    
    //前面有“/”,代表了工程的根目录
    
    InputStream is3 = Test.class.getResourceAsStream("/com/m/n/config.properties");
    
    System.out.println(is3);//不为null
    
     
    
     
    
    ClassLoader.getSystemResourceAsStream 用法:
    
     
    
    和className.class.getResourceAsStream 的第三种取得的路径一样,但少了“/”
    
    
     
    
    InputStream is4 = ClassLoader.getSystemResourceAsStream("properties/PayManagment_Config.properties");
      System.out.println(is4);//不为null
    
     
    
     
    
    FileInputStream 用法:
    
     
    
    和前面的不一样,
    
    一:例如:com.x.y 下有类Test.class ,用上面的三种不同路径取得的结果都是找不到路径:
    
    代码:
    
    FileInputStream fis;
      try {
       fis = new FileInputStream("config.properties");
    
    //fis = new FileInputStream("prop/config.properties");
    
    //fis = new FileInputStream("/com/m/n/config.properties");
    
    //fis = new FileInputStream("com/m/n/config.properties");
    
       System.out.println(fis);
      } catch (FileNotFoundException e) {
       System.out.println("找不到路径");
      }
    
     
    
    结果都是:找不到路径
    
      
    
    为什么呢?
    
     
    
    再试试:
    
    一 单独的类:
    
    String projectPath = System.getProperty("user.dir");//main方法取得的是当前项目路径
    
    //System.out.println(projectPath);
    
    fis = new FileInputStream(projectPath + "/src/com/m/n/config.properties");
    System.out.println(fis);//不为空了
    
     
    
    二:
    
    但是我在做rcp项目时,System.getProperty("user.dir");取得的路径就是D:/Program Files/eclipse, 我的eclipse 安装路径,所以我把资源文件直接放eclipse目录底下
    
    
    fis = new FileInputStream("config.properties");
    System.out.println(fis);//不为空了
    
    
    不知道为什么?现在只是知道了这几种方法肯定有一种适合,但还是有点模糊不清,望懂得的人指点。
    
    //前面没有“/”代表当前类的目录
  • 相关阅读:
    FC网络学习笔记02 -网络配置方法 分类: 网络基础 2013-10-10 09:43 765人阅读 评论(0) 收藏
    FC网络学习笔记01 分类: 网络基础 2013-10-10 09:42 865人阅读 评论(0) 收藏
    CPLD/FPGA厂商概述 . 分类: 硬件开发_FPGA 2013-10-09 16:54 539人阅读 评论(0) 收藏
    @property用法总结
    python的目录
    su
    os.path.join路径拼接
    python的类变量和对象变量[转]
    python的mutable变量与immutable变量
    dataframe操作
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3704121.html
Copyright © 2011-2022 走看看