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());
        } 
    }
相关文章
|
25天前
|
Java
Java“解析时到达文件末尾”解决
在Java编程中,“解析时到达文件末尾”通常指在读取或处理文件时提前遇到了文件结尾,导致程序无法继续读取所需数据。解决方法包括:确保文件路径正确,检查文件是否完整,使用正确的文件读取模式(如文本或二进制),以及确保读取位置正确。合理设置缓冲区大小和循环条件也能避免此类问题。
|
3天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
5天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
16 4
|
7天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
7天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
17天前
|
Java
Java开发如何实现文件的移动,但是在移动结束后才进行读取?
【10月更文挑战第13天】Java开发如何实现文件的移动,但是在移动结束后才进行读取?
40 2
|
17天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
52 1
|
17天前
|
监控 Java
Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
【10月更文挑战第13天】Java定时扫码一个文件夹下的文件,如何保证文件写入完成后才进行处理?
59 1
|
21天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
33 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
9天前
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
17 0