读取properties文件中内容

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。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章