Open vagabond1-1983 opened 8 years ago
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);//不为空了
className.class.getResourceAsStream 用法:
第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类Test.class ,同时有资源文件config.properties 那么,应该有如下代码: //前面没有“/”代表当前类的目录
第二:在Test.class目录的子目录下,例如:com.x.y 下有类Test.class ,同时在 com.x.y.prop目录下有资源文件config.properties 那么,应该有如下代码: //前面没有“/”代表当前类的目录
第三:不在同目录下,也不在子目录下,例如:com.x.y 下有类Test.class ,同时在 com.m.n 目录下有资源文件config.properties 那么,应该有如下代码: //前面有“/”,代表了工程的根目录
ClassLoader.getSystemResourceAsStream 用法: 和className.class.getResourceAsStream 的第三种取得的路径一样,但少了“/”
FileInputStream 用法:
和前面的不一样, 一:例如:com.x.y 下有类Test.class ,用上面的三种不同路径取得的结果都是找不到路径: 代码:
结果都是:找不到路径
为什么呢?
再试试: 一 单独的类: