java之读取配置文件的几种方法

来源:互联网 发布:linux怎么启动vim 编辑:程序博客网 时间:2024/06/09 23:14
1 java方法中读取配置文件一共至少有9种方法。
分别通过:
Properties、
ResourceBundle、
PropertyResourceBundle、
class类的getResource方法(通过字节流)、
class类的getResource方法(通过字符流)、
class类的getResourceAsStream方法、
ClassLoader类的getResource方法(通过字节流)、
classLoader类的getResource方法(通过字符流)、
classLoader类的getResourceAsStream方法


2 通过Properties方法来读取配置文件。
如:String file_url=this.getClass().getResource("/test.properties").toString();
if(file_url.startsWith("file:/")){
file_url=file_url.substring(6,file_url.length());
}
Properties properties=new Properties();
try {
InputStream inputStream=new FileInputStream(new File(file_url));
properties.load(inputStream);
String name_value=properties.getProperty("name").toString();
String password_value=properties.getProperty("password").toString();
System.out.println("第一种方法:"+name_value+","+password_value);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第一种方法失败");



3 通过ResourceBundle方法来读取配置文件。
如:ResourceBundle resourceBundle=ResourceBundle.getBundle("/test");
String name_value=resourceBundle.getString("name").toString();
String password_value=resourceBundle.getString("password").toString();
System.out.println("第二种方法:"+name_value+","+password_value);


4 通过PropertyResourceBundle方法类读取配置文件。
如:InputStream inputStream;
try {
inputStream = new FileInputStream(new File(file_url));
PropertyResourceBundle propertyResourceBundle=new PropertyResourceBundle(inputStream);
String name_value_3=propertyResourceBundle.getString("name").toString();
String password_value_3=propertyResourceBundle.getString("password").toString();
System.out.println("第三种方法:"+name_value_3+","+password_value_3);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第三种方法失败");
}


5 通过Class类的getResource方法(字节流).
如:try {
InputStream inputStream_4=new FileInputStream(new File(file_url));
byte[] bytes=new byte[1024];
int num=-1;
String file_value_sum="";
while((num=inputStream_4.read(bytes))>-1){
String file_value=new String(bytes,0,num);
file_value_sum=file_value_sum+file_value;
}
System.out.println("第四种方法:"+file_value_sum);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第四种方法失败");
}


6 通过class类的getResource方法(字符流).
如:try {
BufferedReader bufferedReader=new BufferedReader(new FileReader(new File(file_url)));
String file_value="";
String value="";
while((value=bufferedReader.readLine())!=null){
file_value=file_value+value;
}
System.out.println("第五中方法:"+file_value);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第五种方法失败");
}


7 通过class的getResourceAsStream方法。
如:try {
InputStream inputStream_5=this.getClass().getResourceAsStream("/test.properties");
byte[] bytes=new byte[1024];
int num=-1;
String file_value="";
while((num=inputStream_5.read(bytes))>-1){
String file_v=new String(bytes,0,num);
file_value=file_value+file_v;
}
System.out.println("第六种方法:"+file_value);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第六种方法失败");
}


8 通过classLoader类的getResource方法(字节流)。
如:
String file_url_7=this.getClass().getClassLoader().getResource("/test.properties").toString();
if(file_url_7.startsWith("file:/")){
file_url_7=file_url_7.substring(6,file_url_7.length());
}
try {
InputStream inputStream_7=new FileInputStream(new File(file_url_7));
byte[] bytes=new byte[1024];
int num=-1;
String file_value_7="";
while((num=inputStream_7.read(bytes))>-1){
String file_v_7=new String(bytes,0,num);
file_value_7=file_value_7+file_v_7;
}
System.out.println("第七种方法:"+file_value_7);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第七种方法失败");
}


9 通过classloader类的getResource方法(字符流)。
如:try {
BufferedReader bufferedReader=new BufferedReader(new FileReader(new File(file_url_7)));
String file_value_8="";
String file_v_8="";
while((file_v_8=bufferedReader.readLine())!=null){
file_value_8=file_value_8+file_v_8;
}
System.out.println("第八种方法:"+file_value_8);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第八种方法失败");
}


10 通过classloader类的getResourceAsStream方法。
如:try {
InputStream inputStream_9=this.getClass().getClassLoader().getResourceAsStream("/test.properties");
byte[] bytes=new byte[1024];
int num=-1;
String file_value_9="";
while((num=inputStream_9.read(bytes))>-1){
String file_v_9=new String(bytes,0,num);
file_value_9=file_value_9+file_v_9;
}
System.out.println("第九中方法:"+file_value_9);
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("第九种方法失败");
}


12 在web项目中的java代码中classloader类的getSystemResource()和getSystemResourceAsStream()和ServletActionContext.getServletContext().getResourceAsStream()得到的路径都不正确。故不用这些来读取配置文件。