Java API 操作 HDFS 文件(三)

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

删除文件/目录


通过`FileSystem.delete(Path f,Boolean recursive)`可删除指定的 HDFS 文件或目录,其中 `f` 为需要删除文件或目录的完整路径,`recursive` 用来确定是否进行递归删除,若是删除文件则为 `false`,若是删除的是目录则为 `True`。具体实现如下:


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");
    }
//单元方法:删除文件或者文件夹@TestpublicvoiddeleteFileOrDir() throwsIllegalArgumentException, IOException{
//删除文件,第二参数:是否递归,若是文件或者空文件夹时可以为false,若是非空文件夹则需要为truefs.delete(newPath("/123/read.txt"),false);
//删除文件夹fs.delete(newPath("/123/data"), true);
    }
// 每次执行单元测试后都会执行该方法,关闭资源@AfterpublicvoidtearDown() {
if (null!=fs) {
try {
fs.close();
            } catch (IOExceptione) {
e.printStackTrace();
            }
        }
    }
}

查看指定路径中文件和块信息

通过`FileSystem.listFiles(Path f,Boolean recursive)`可递归获取指定 HDFS 目录下的所有文件的绝对路径,其中 `f` 为指定路径,`recursive` 用来确定是否进行递归列出。具体实现如下:

importjava.io.FileNotFoundException;
importorg.apache.hadoop.fs.BlockLocation;
importorg.apache.hadoop.fs.LocatedFileStatus;
importorg.apache.hadoop.fs.RemoteIterator;
//单元方法:查看目录信息,只显示该目录下的文件信息@TestpublicvoidlistFiles() throwsFileNotFoundException, IllegalArgumentException, IOException{
//使用迭代器递归获取该目录下的所有文件RemoteIterator<LocatedFileStatus>listfile=fs.listFiles(newPath("/123"), true);
while(listfile.hasNext()){
LocatedFileStatusfileStatus=listfile.next();
System.out.println("文件路径:"+fileStatus.getPath());
System.out.println("文件名称:"+fileStatus.getPath().getName());
System.out.println("块的大小:"+fileStatus.getBlockSize());
System.out.println("文件所有者:"+fileStatus.getOwner());
System.out.println("文件所属组:"+fileStatus.getGroup());
System.out.println("文件权限:"+fileStatus.getPermission());
System.out.println("副本个数:"+fileStatus.getReplication());
System.out.println("文件长度:"+fileStatus.getLen());
System.out.println("-----块的信息-----");
BlockLocation[] blockLocations=fileStatus.getBlockLocations();
for(BlockLocationbLocation:blockLocations){
System.out.println("块的长度:"+bLocation.getLength()+"\t块起始偏移量:"+bLocation.getOffset());
//块所在的DataNode节点String[] hosts=bLocation.getHosts();
System.out.print("DataNode: ");
for(Stringstr:hosts){
System.out.print(str+"\t");
                }
System.out.println();
            }
System.out.println("------------------------");
        }
    }
相关文章
|
11月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
394 1
|
12月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
12月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
462 100
|
12月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
439 101
|
12月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
539 101
|
12月前
|
安全 Java API
使用 Java 构建强大的 REST API 的四个基本技巧
本文结合探险领域案例,分享Java构建REST API的四大核心策略:统一资源命名、版本控制与自动化文档、安全防护及标准化异常处理,助力开发者打造易用、可维护、安全可靠的稳健API服务。
626 116
|
12月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
243 0
Java Stream API 的强大功能
|
安全 Java API
Java日期时间API:从Date到Java.time
本文深入解析了Java 8中引入的全新日期时间API,涵盖LocalDate、LocalTime、LocalDateTime、ZonedDateTime等核心类的使用,以及时间调整、格式化、时区处理和与旧API的互操作。通过实例对比,展示了新API在可变性、线程安全与易用性方面的显著优势,并提供迁移方案与实战技巧,助你掌握现代Java时间处理的最佳实践。
|
存储 NoSQL Java
Java Stream API:集合操作与并行处理
Stream API 是 Java 8 提供的集合处理工具,通过声明式编程简化数据操作。它支持链式调用、延迟执行和并行处理,能够高效实现过滤、转换、聚合等操作,提升代码可读性和性能。
1013 0
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
521 1