`

HDFS文件系统操作文件或文件夹

阅读更多
package com.my.hdfs;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

@SuppressWarnings("all")
public class HDFSTest {

private final static String HDFS_PATH = "hdfs://pc1:9000/hellow";

public static void main(String[] args) throws IOException, URISyntaxException {
//获取到HDFS文件系统对象
final FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration());


createFolder(fileSystem,new Path("/logs"));

fileUploadToHDFS(fileSystem,new Path("/logs/hadoop9.avi"),new File("D:/hadoop9.avi"));

downLoadHDFSFile(fileSystem,new Path("/logs/hadoop9.avi"),new File("D:/hadoop9_02.avi"));

deleteFileOrFolder(fileSystem,new Path("/logs"));

getHDFSDirList(fileSystem);

}

/**
* 创建文件夹
* @param fileSystem HDFS文件系统对象
* @param path 要创建的文件夹,注意带有"/"为文件系统的根目录下下,否则为当前用户所在的路径
* @throws IOException
*/
private static void createFolder(final FileSystem fileSystem,final Path path) throws IOException {
if (fileSystem.exists(path)) {
System.out.println(path.getName()+" folder exist!");
} else {
fileSystem.mkdirs(path);
}
}

/**
* 上传文件到HDFS文件系统
* @param fileSystem HDFS文件系统对象
* @param toPath HDFS文件系统目标路径
* @param srcFile 本地源文件
* @throws IOException
* @throws FileNotFoundException
*/
private static void fileUploadToHDFS(final FileSystem fileSystem,final Path toPath,final File srcFile)
throws IOException, FileNotFoundException {
final FSDataOutputStream out = fileSystem.create(toPath);
final BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFile));
IOUtils.copyBytes(in, out, 1024, true);
}

/**
* 删除HDFS文件系统上的文件或文件夹
* @param fileSystem HDFS文件系统对象
* @param fsPath HDFS文件系统上的文件或者是文件夹
* @throws IOException
*/
private static void deleteFileOrFolder(final FileSystem fileSystem,final Path fsPath)
throws IOException {
if (fileSystem.exists(fsPath)) {
System.out.println("folder exist,delete the folder!");
fileSystem.delete(fsPath, true);//注意如果是文件夹必须为true,如果是文件true和false无所谓
} else {
System.out.println("folder not exist!");
}
}

/**
* 从HDFS文件系统上下载文件
* @param fileSystem HDFS文件系统对象
* @param srcFile HDFS文件系统上的源文件
* @param toPath 下载到本地目标路径
* @throws IOException
* @throws FileNotFoundException
*/
private static void downLoadHDFSFile(final FileSystem fileSystem,final Path srcFile,final File toPath)
throws IOException, FileNotFoundException {
final FSDataInputStream in = fileSystem.open(srcFile);
final BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(toPath));
IOUtils.copyBytes(in, out, 1024, true);
}

/**
* 获取到HDFS文件系统上的根目录列表
* @param fileSystem HDFS文件系统对象
* @throws IOException
*/
private static void getHDFSDirList(FileSystem fileSystem) throws IOException {
final FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));
for (FileStatus fileStatus : listStatus) {
String isDir = fileStatus.isDir()?"文件夹":"文件";
final String permission = fileStatus.getPermission().toString();
final short replication = fileStatus.getReplication();
final long len = fileStatus.getLen();
final String dateStr = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss").format(new Date(fileStatus.getAccessTime()));
final String path = fileStatus.getPath().toString();
System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+dateStr+"\t"+path);
}
}
}
分享到:
评论

相关推荐

    java管理hdfs文件和文件夹项目hadoop2.4

    本文将深入探讨使用Java管理HDFS文件和文件夹的关键知识点,特别是基于Hadoop 2.4版本。 首先,理解HDFS的基础概念至关重要。HDFS是一种分布式文件系统,设计用于跨大量廉价硬件节点存储和处理大数据。它遵循主从...

    HDFS实例基本操作

    2. HDFS API:通过FSDataInputStream,可以读取HDFS文件并写入本地文件系统。 四、HDFS的文件创建与删除 1. 创建文件夹:使用`hadoop fs -mkdir`命令创建目录,如`hadoop fs -mkdir /myfolder`。 2. 删除文件:...

    HDFS判断文件或目录是否存在——Shell命令实现 + Java代码实现

    hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...

    如何在python中用HDFS文件系统实现高效存储

    Python在HDFS文件系统上实现高效存储的过程不仅限于使用H5Py库,还可以借助其他工具和库,比如Pydoop,这是一个支持在Python中操作HDFS的库。Pydoop允许用户以Python的方式编写MapReduce任务,并与HDFS进行交互,...

    HDFS文件系统技术详解.pptx

    * 上传文件或目录:hdfs dfs -put log.txt /log/20161001/ 或 hdfs dfs -copyFromLocal log.txt /log/20161001/ * 显示目录下的文件:hdfs dfs -ls /log/20161001/ * 递归显示目录下的文件:hdfs dfs -ls -R /log/...

    3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件

    在大数据处理领域,Hadoop 分布式文件系统(HDFS)扮演着核心角色。为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上...

    eclipse操作HDFS需要文件

    4. **编写Hadoop程序**:使用Eclipse创建Java项目,导入Hadoop相关的库(这些库通常可以从Hadoop的lib目录下找到),编写读写HDFS文件的代码。 5. **测试HDFS操作**:通过Eclipse内置的HDFS浏览器或者在代码中调用...

    大数据技术原理与应用 第三章 分布式文件系统HDFS 学习指南

    HDFS 基础知识大总结 HDFS(Hadoop Distributed File System)是 Hadoop 项目中的一部分,是一种分布式文件系统。...HDFS 是一种功能强大且灵活的分布式文件系统,提供了许多便捷的命令和 Web 界面来操作文件系统。

    构建HDFS分布式文件系统

    本文档详细介绍了如何在CentOS 6.6 X64操作系统上搭建Hadoop 2.7.0版本的HDFS(Hadoop Distributed File System)分布式文件系统。该过程分为几个主要步骤:环境准备、安装Java环境、部署ZooKeeper集群、创建Hadoop...

    Hadoop原理与技术hdfs命令行基本操作

    (6)移动hdfs文件:hdfs dfs -mv /hdfs路径 /hdfs路径 (7)复制hdfs文件:hdfs dfs -cp /hdfs路径 /hdfs路径 (8)删除hdfs文件:hdfs dfs -rm /文件名 (9)删除hdfs文件夹:hdfs dfs -rm -r /文件夹名

    云计算技术实验报告四HDFS文件的读写

    实验报告“云计算技术实验报告四HDFS文件的读写”主要涵盖了如何在Hadoop的分布式文件系统(HDFS)上进行文件操作,包括文件的上传和下载,以及文件的合并。该实验是针对计算机科学专业的《云计算技术》课程设计,...

    搭建hadoop后hdfs基本操作 ecplisec操作

    HDFS(Hadoop Distributed File System)是Hadoop的核心组件,提供了一个高容错、可扩展的分布式文件系统。本文将深入探讨在搭建好Hadoop环境后,如何使用Eclipse进行HDFS的基本操作。 首先,我们要理解HDFS的基本...

    利用javaAPI访问HDFS的文件

    在Java程序中操作HDFS文件主要依赖于`org.apache.hadoop.fs.FileSystem`类,该类提供了许多方法用于执行文件系统操作,如创建文件、删除文件、读写文件等。 ##### 1. 创建文件系统实例 ```java Configuration conf ...

    HDFS-API文件上传、创建、删除、重命名

    本教程将详细讲解如何利用HDFS API进行文件的上传、创建、删除以及重命名等基本操作。这些API是Java编程接口,为开发者提供了与HDFS交互的便利。 首先,我们需要导入Hadoop相关的库,通常在Java项目中,这可以通过...

    第4章 HDFS 2 4.1. 简介 2 4.1.1. 概述 2 4.1.2. 组成架构 4 4.1.3. HDFS文件块大小

    4.3.6. 编写Java代码——向HDFS文件系统创建文件夹 24 4.3.7. 编写Java代码——文件上传 27 4.3.8. 编写Java代码——删除文件夹 30 4.3.9. 编写Java代码——重命名文件 31 4.3.10. 编写Java代码——遍历文件夹 32 ...

    【HDFS篇02】HDFS命令行操作1

    在Hadoop分布式文件系统(HDFS)中,进行操作通常通过命令行界面(CLI)进行,这包括管理文件、目录以及与本地文件系统的交互。本文将详细介绍HDFS的Shell操作,主要涵盖基本语法、常用命令以及其用法。 首先,HDFS...

    java操作hadoop的hdfs的各种操作

    java操作hadoop的hdfs的各种操作,包括文件创建,删除,文件夹创建,上传文件,下载文件,读取文件等

    向hdfs上传Excel文件.doc

    在大数据处理场景中,经常需要将Excel文件上传到Hadoop分布式文件系统(HDFS)中进行进一步的数据处理或分析。然而,由于HDFS本身并不直接支持Excel文件格式,通常的做法是先将Excel文件转换为CSV等更易于处理的格式...

    hdfs-compress:hdfs 文件 压缩

    hdfs-compress 压缩hdfs文件 一般压缩hdfs指 ,数据文件的压缩 和 mapred 中间结果压缩 工程只做数据压缩,至于MR中间结果压缩减少网络IO,只需要配置 mapred-site.xml 即可,网上资料很多。 工程只实现了lzo的压缩...

    大数据 实验2 HDFS基础操作实验.pdf

    列表文件目录可以使用hdfs dfs -ls路径命令,创建文件夹可以使用hdfs dfs -mkdir文件夹名称命令,上传文件可以使用hdfs dfs -put源路径目标存放路径命令,下载文件可以使用hdfs dfs -get HDFS文件路径本地存放路径...

Global site tag (gtag.js) - Google Analytics