现今的程序都要求能够读写配置文件,使得程序的配置信息能够很方便地修改。
读取配置文件通常使用property文件,下面列举了从hadoop的hdfs和本地的文件系统读取配置的例子。
话不多说,上代码:
//读取hdfs配置文件
public static Properties getPropertiesFromHDFS(String path){
Properties prop = new Properties();
Configuration conf = new Configuration();
FSDataInputStream hdfsInStream = null;
// String path = "hdfs:///user/hdfs/redis.cfg";
// String path = "c:\\hadoop\redis.cfg";
try {
FileSystem fs = FileSystem.get(URI.create(path), conf);
hdfsInStream = fs.open(new Path(path));
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
InputStreamReader read = null;
try {
read = new InputStreamReader(hdfsInStream, "utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
prop.load(read);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return prop;
}
下面是从本地读取:
public static Properties getPropertiesFromLocal(String path) {
Properties prop = new Properties();
FileInputStream fis = null;
try {
File f = new File(path);
fis = new FileInputStream(f);
prop.load(fis);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (null != fis) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return prop;
}