className.class.getResourceAsStream 用法:
1.例如:com.x.y 下有类Test.class ,同时有资源文件config.properties
//前面没有“/”代表当前类的目录 前面有“/”,代表了工程的根目录
InputStream is1 = Test.class.getResourceAsStream("config.properties");
2.如果:com.x.y 下有类Test.class ,同时在 com.x.y.prop目录下有资源文件config.properties
InputStream is2 = Test.class.getResourceAsStream("prop/config.properties");
3.如果:com.x.y 下有类Test.class ,同时在 com.m.n 目录下有资源文件config.properties
InputStream is3 = Test.class.getResourceAsStream("/com/m/n/config.properties");
注:根据JDK文档的说法,Class对象取得资源的方法其实是“委托”给装载它的ClassLoader来做的
ClassLoader.getSystemResourceAsStream 用法:
和className.class.getResourceAsStream 的第三种取得的路径一样,但少了“/”
InputStream is4 = ClassLoader.getSystemResourceAsStream("properties/PayManagment_Config.properties");
理解Class.getResourceAsStream()
ClassLoader提供了两个方法用于从装载的类路径中取得资源:
public URL getResource(String name); //得到的是一个URL对象来定位资源
public InputStream getResourceAsStream(String name); //取得该资源输入流的引用保证程序可以从正确的位置抽取数据
FileInputStream 用法:
String projectPath = System.getProperty("user.dir"); //取得的路径就是eclipse 安装路径
fis = new FileInputStream(projectPath + "/src/com/m/n/config.properties");
把资源文件直接放eclipse目录底下fis = new FileInputStream("config.properties");也行