客户端代码模板
- 获取一个客户端对象
- 执行相关的操作
- 关闭资源
初始化操作
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()); } } }