package readProperties; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class ReadMethod { public String useIO(String name){ /* * 使用IO读取,注意文件位置不同时的路径问题 */ /* * properties文件的管理类 */ Properties pro = new Properties(); FileInputStream fis = null; try { fis = new FileInputStream("user.properties"); //fis = new FileInputStream("src/student.properties"); //fis = new FileInputStream("src/readProperties/emp.properties"); } catch (FileNotFoundException e) { e.printStackTrace(); } try { /* * 把文件加载到内存中(程序中) */ pro.load(fis); } catch (IOException e) { e.printStackTrace(); } String value = pro.getProperty(name); try { fis.close(); } catch (IOException e) { e.printStackTrace(); } return value; } public String useClassLoader(String name){ /* * 使用类加载器来加载,文件需要在src目录下才可以加载, * 所以如果读取user.properties会出现NullPointer,只可读 */ //java.io.InputStream is = ReadMethod.class.getClassLoader().getResourceAsStream("readProperties/emp.properties"); java.io.InputStream is = ReadMethod.class.getClassLoader().getResourceAsStream("student.properties"); Properties pro = null; try { pro = new Properties(); pro.load(is); } catch (IOException e) { e.printStackTrace(); } String value = pro.getProperty(name); try { is.close(); } catch (IOException e) { e.printStackTrace(); } return value; } public String useClass(String name){ /* * 使用Class这个类的getResourceAsStream()加载, * 程序从当前类所在的包找,如果存在子包,需要加上 * 包名.当前类所在包外的资源无法 * 加载(无法加载student.properties和user.properties) */ java.io.InputStream is = ReadMethod.class.getResourceAsStream("emp.properties"); Properties pro = new Properties(); try { pro = new Properties(); pro.load(is); } catch (IOException e) { e.printStackTrace(); } String value = pro.getProperty(name); try { is.close(); } catch (IOException e) { e.printStackTrace(); } return value; } public static void main(String[] args) { ReadMethod rm = new ReadMethod(); //System.out.print(rm.useIO("jack")); //System.out.print(rm.useClassLoader("tom")); System.out.print(rm.useClass("mike")); } } 注意:初始化IO流会占用系统资源,所以用完后需要关闭所有流,否则会浪费系统资源 说明:user.properties位于工程包下与src平级,内容jack=123456;student.properties位于src下,内容tom=math;emp.properties位于src/readProperties,内容mike=IT。
读取properties文件中内容
最新推荐文章于 2022-08-23 11:41:38 发布