HDFS文件系统是Hadoop的分布式文件系统,Hadoop的API中提供了一些方法,以便在编程的时候向HDFS中写入和读出文件。
下面通过一个例子来说明:
public static void readAndWrite(){
Configuration conf = new Configuration();//获得conf对象,以便能够获得配置文件的信息
FileSystem fs;
try {
fs = FileSystem.get(
URI.create(conf.get("fs.default.name")), conf);
//读取HDFS系统中的一个文件
InputStream input =fs.open(new Path("/user/root/urlLib/ftpurl"));
byte [] b= new byte[1024];
input.read(b, 0,b.length);
String s =new String(b);
system.out.println(s);
input.close();
//将刚刚读出来的字符串再写入到HDFS系统中
OutputStream out = fs.create(new Path(“/user/root/urlLib/ftpurl2”), true);
out.write(s.getBytes());
out.flush();
out.close();
//将user/root/urlLib/ftpurl这个文件删除
fs.delete(new Path("/user/root/urlLib/ftpurl") , true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这个过程和普通的文件读写类似,唯一不同的就是通过Hadoop中FileSystem来获取读写流,以便在读写的时候能够将文件写入到HDFS系统中。