----------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------
一.mkdir方法
| 修饰符和类型 | 方法 |
| static boolean | mkdirs(FileSystem fs,Path dir,fs) |
| boolean | mkdirs(Path f) |
| abstract boolean | mkdirs(Path f,FsPermission permission) |
参数说明
f:给定路径
fs:文件系统对象。
dir:要创建的目录名称
permission:为该目录设置的权限
e.g.使用mkdirs(Path f)方法在HDFS上创建目录"/user/root/login",具体代码如下
package APItest;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class MkdirTest {
public static void main(String[] args) throws IOException {
//获取配置
Configuration conf =new Configuration();
conf.set("fs.defaultFS","master:8020");
//获取文件系统
FileSystem fs=FileSystem.get(conf);
//声明创建的目录
Path path=new Path("/user1/root/login");
//调用mkdirs函数创建目录
fs.mkdirs(path);
//关闭文件系统
fs.close();
}
}
二.delete方法
| 修饰符和类型 | 方法 |
| boolean | delete(Path f) |
| abstract boolean | delete(Path f , boolean recursive) |
参数说明
f:给定路径
recursive:如果路径是一个目录且不为空,将recursive设为true,则该目录将被删除,否则会引发异常。在是文件的情况下,recursive可以设为true或false。
e.g.使用delete(Path f , boolean recursive)删除HDFS上/user/root/login目录下的user_login.txt文件,具体代码如下
package APItest;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class DeleteTest {
public static void main(String[] args) throws IOException {
//获取配置
Configuration conf =new Configuration();
conf.set("fs.defaultFS","master:8020");
//获取文件系统
FileSystem fs=FileSystem.get(conf);
//声明文件路径
Path path=new Path("/user/root/login/user_login.txt");
//删除文件
fs.delete(path,true);
//关闭文件系统
fs.close();
}
}
三.copyFromLocalFile方法
| 修饰符和类型 | 方法 |
| void | copyFromLocalFile(boolean delSrc,boolean overwrite,Path[ ] Srcs,Path dst) |
| void | copyFromLocalFile(boolean delSrc,boolean overwrite,Path Src,Path dst) |
| void | copyFromLocalFile(boolean delSrc, Path Src,Path dst) |
| void | copyFromLocalFile(Path Src,Path dst) |
参数说明
delSrc:是否删除原文件
overwrite:是否覆盖已存在的文件
srcs:储存源文件路径的数组
dst:目标路径
src:源文件路径
e.g.使用copyFromLocalFile(Path Src,Path dst)方法将本地F盘中的user_login.txt文件上传到HDFS上的/user/root目录下
package APItest;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class UploadTest {
public static void main(String[] args) throws IOException {
//获取配置
Configuration conf =new Configuration();
conf.set("fs.defaultFS","master:8020");
//获取文件系统
FileSystem fs=FileSystem.get(conf);
//声明源文件路径和目标路径
Path fromPath = new Path("D:/user_login.txt");
Path topath=new Path("/user/root");
//调用copyFromLocalFile方法上传文件
fs.copyFromLocalFile(fromPath,topath);
//关闭文件系统
fs.close();
}
}
四.copyToLocalFile方法
| 修饰符和类型 | 方法 |
| void | copyToLocalFile(boolean delSrc,Path Src,Path dst) |
| void | copyToLocalFile (boolean delSrc, Path Src,Path dst,boolean useRawLocalFileSystem) |
| void | copyToLocalFile (Path Src,Path dst) |
参数说明
delSrc:是否删除原文件
src:源文件路径
dst:目标路径
useRawLocalFileSystem:是否使用原始文件系统作为本地文件系统
e.g.使用copyToLocalFile (boolean delSrc, Path Src,Path dst,boolean useRawLocalFileSystem)方法将HDFS上/user/root目录下的user_login.txt文件下载到本地D盘中,具体代码如下
package APItest;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class DownloadTest {
public static void main(String[] args) throws IOException {
//获取配置
Configuration conf =new Configuration();
conf.set("fs.defaultFS","master:8020");
//获取目标文件
FileSystem fs=FileSystem.get(conf);
//声明源文件路径和目标路径
Path fromPath = new Path("/user/root/user_login.txt");
Path topath=new Path("D:/");
//调用copyToLocalFile方法下载文件到本地,其中useRawLocalFileSystem为true,表示使用原始文件系统作为本地文件系统,为false则表示不使用原始文件系统作为本地文件系统
fs.copyToLocalFile(false,fromPath,topath,true);
//关闭文件系统
fs.close();
}
}
注:
在使用delete方法删除文件时程序运行可能会报"Permission denied: "的异常,是因为权限不足导致的,解决方法需要在hadoop配置文件中的hdfs -site.xml加入如下内容,加入完成后重启集群即可解决,若使用其他方法也报"Permission denied: "的异常,也使用此方法解决
dfs.permissions false If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories.



