客户端代码模板
- 获取一个客户端对象
- 执行相关的操作
- 关闭资源
初始化操作
private FileSystem fs;
获取一个客户端对象
@Before
public void init() throws URISyntaxException, IOException, InterruptedException {
// 连接集群NN地址
URI uri = new URI("hdfs://hadoop102:8020");
// 创建一个配置文件
Configuration configuration = new Configuration();
// 用户
String user = "atguigu";
// 获取客户端对象
fs = FileSystem.get(uri, configuration,user);
}
关闭资源
@After
public void close() throws IOException {
// 关闭资源
fs.close();
}
创建目录
@Test
public void testmkdir() throws URISyntaxException, IOException, InterruptedException {
// 创建一个文件夹
fs.mkdirs(new Path("/xiyou/huaguoshan1"));
}
客户端上传文件到HDFS
@Test
public void testPut() throws IOException {
// 参数解读
/*
* 参数一表示删除原数据
* 参数二表示是否允许覆盖
* 参数三源路径
* 参数四目标地址路径
*
* */
fs.copyFromLocalFile(false,true,new Path("D:\\sunwukong.txt"),new Path("/xiyou/huaguoshan/"));
}
客户端从HDFS下载文件到本地
// 文件下载
@Test
public void testGet() throws IOException {
/*
* 参数一:源文件是否删除
* 参数二:源文件的路径
* 参数三:目的地址的路径 window
* 参数四:校验
* */
fs.copyToLocalFile(false,new Path("/xiyou/huaguoshan/"),new Path("D:\\"),false);
}
文件删除
// 文件删除
@Test
public void testRm() throws IOException {
/*
* 第一个参数:要删除的路径
* 第二个参数:是否递归删除
* */
fs.delete(new Path("/jdk-8u212-linux-x64.tar.gz"),false);
// 删除空目录
// fs.delete(new Path("/xiyou"),false);
// 删除非空目录
fs.delete(new Path("/xiyou"),true);
}
判断文件类型
// 判断是文件夹还是文件
@Test
public void testFile() throws IOException {
FileStatus[] listStatus = fs.listStatus(new Path("/"));
for (FileStatus status : listStatus) {
if (status.isFile()) {
System.out.println("文件:" + status.getPath().getName());
} else {
System.out.println("目录:" + status.getPath().getName());
}
}
}