Java API 操作 HDFS 文件(二)

简介: Java API 操作 HDFS 文件(二)

Java API 操作 HDFS 文件(二)


下载文件

packagecom.xiaowang.hdfs;
importjava.io.IOException;
importjava.net.URI;
importjava.net.URISyntaxException;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FileSystem;
importorg.apache.hadoop.fs.Path;
importorg.junit.After;
importorg.junit.Before;
importorg.junit.Test;
publicclassHDFSDemo {
FileSystemfs=null;
// 每次执行单元测试前都会执行该方法@BeforepublicvoidsetUp() throwsIOException, InterruptedException, URISyntaxException {
Configurationconf=newConfiguration();
// 不需要配置“fs.defaultFS”参数,直接传入URI和用户身份,最后一个参数是安装Hadoop集群的用户,我的是“root”fs=FileSystem.get(newURI("hdfs://localhost:9000"), conf, "root");
    }
// 单元方法:下载文件@TestpublicvoiddownLoadFileToLocal() throwsIOException {
/** src:要下载的文件所在的HDFS路径 dst:要下载到本地的目标路径*/Pathsrc=newPath("/123/README.txt");
Pathdst=newPath("/root");
// 默认不删除HDFS源路径的文件,覆盖本地同名文件fs.copyToLocalFile(src, dst);
    }
// 每次执行单元测试后都会执行该方法,关闭资源@AfterpublicvoidtearDown() {
if (null!=fs) {
try {
fs.close();
            } catch (IOExceptione) {
e.printStackTrace();
            }
        }
    }
}

 查看本地文本系统 /root 目录,存在 README.txt 文件说明下载成功:


重命名文件/目录

通过`FileSystem.rename(Path arg0,Path arg1)`可对 HDFS 文件或目录进行重命名,其中 `arg0` 和 `arg1` 均为 HDFS 文件或目录的完整路径。具体实现如下:


// 单元方法:重命名文件或者文件夹@TestpublicvoidrenameFileOrDir() throwsIllegalArgumentException, IOException {
//重命名文件fs.rename(newPath("/123/README.txt"), newPath("/123/read.txt"));
//重命名文件夹fs.rename(newPath("/123/1"), newPath("/123/data"));
    }


查看文件/目录状态

通过`FileStatus.getPath()`可查看指定 HDFS 中某个目录下所有文件或文件夹,具体实现如下:


importjava.io.FileNotFoundException;
importorg.apache.hadoop.fs.FileStatus;
//单元方法:查看文件及文件夹信息@TestpublicvoidlistStatus() throwsFileNotFoundException, IllegalArgumentException, IOException{
//使用listStatus()方法获得参数中指定目录下文件和文件夹的元数据信息(文件(夹)名称、路径、长度等),存放在一个数组中FileStatus[] listStatus=fs.listStatus(newPath("/123"));
Stringflag="";
for(FileStatusstatus:listStatus){
if(status.isDirectory()){
flag="Directory";
            }else {
flag="File";
            }
System.out.println(flag+":"+status.getPath().getName());
        } 
    }
相关文章
|
1天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
20 3
|
3天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
21 11
|
4天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
7天前
|
存储 安全 Java
说说Java 8 引入的Stream API
说说Java 8 引入的Stream API
8 0
|
7天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
8天前
|
安全 Java API
RESTful API设计与实现:Java后台开发指南
【4月更文挑战第15天】本文介绍了如何使用Java开发RESTful API,重点是Spring Boot框架和Spring MVC。遵循无状态、统一接口、资源标识和JSON数据格式的设计原则,通过创建控制器处理HTTP请求,如示例中的用户管理操作。此外,文章还提及数据绑定、验证、异常处理和跨域支持。最后,提出了版本控制、安全性、文档测试以及限流和缓存的最佳实践,以确保API的稳定、安全和高效。
|
11天前
|
存储 Java 关系型数据库
掌握Java 8 Stream API的艺术:详解流式编程(一)
掌握Java 8 Stream API的艺术:详解流式编程
42 1
|
20天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
4月前
|
存储 分布式计算 Hadoop
Hadoop系列HDFS详解
Hadoop系列HDFS详解
40 0
|
4月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
186 0