一、两个重要的类
1. Configuration类
创建一个Configuration对象时,其构造方法会默认加载hadoop中的两个配置文件,分别是hdfs-site.xml以及core-site.xml,这两个文件中会有访问hdfs所需的参数值,指定了hdfs的地址,通过这个地址访问hdfs。
一个应用程序只创建一个Configuration。
2. FileSystem类
该抽象类类提供了丰富的方法用于对文件系统进行操作,比如创建目录、删除文件、重命名等。
二、常用函数
1. 判断路径是否存在
FileSystem.exists(Path path) path: 路径
2. 向HDFS中上传文件
FileSystem.copyFromLocalFile(Path src, Path dst) src: 本地文件路径 dst: HDFS文件系统中的目的路径
3. 从HDFS中下载文件
FileSystem.copyToLocalFile(Path src, Path dst) src: HDFS中文件路径 dst: 本地文件系统中的目的路径
4. 删除HDFS中指定文件
FileSystem.delete(Path path, Boolen recursive) path: 指定文件的路径 recursive: 是否递归删除,是则为true,否则为false
5. 创建HDFS中的文件
FileSystem.mkdirs(Path path) path: 文件目录
6. 将文件从源路径移动到目的路径
FileSystem.rename(Path src, Path dst) src: HDFS中源路径 dst: HDFS中目的路径
7.获取文件信息(大小、权限等)
首先需要创建一个数组存放该目录下所有文件的FileStatus对象。
FileStatus[] fileStatuses = hfs.listStatus(HDFSPath);
·fileStatuses[i].getLen(): 返回的值类型为long,文件大小。
·fileStatuses[i].getOwner(): 返回值类型为String,所有者信息。
·fileStatuses[i].getPath(): 返回值类型为Path,文件路径。
·fileStatuses[i].getPermission(): 返回值类型为FsPermission,文件权限。
·fileStatuses[i].getModificationTime(): 返回值类型为long,修改时间。
判断目录是否为空:
if(fileStatuses.length > 0){
System.out.println("该目录不为空!");
}else{
System.out.println("该目录为空");
}
|