分布式文件系统HDFS

*上篇外面简单介绍了hdfs的读取与上传文件,主要是实例化FileSystem对象后,调用open()与create()方法来过去输入流FSDataInputStream和输出流FSDataOutputStream.

接下来小小白会来介绍FileSystem是如何列出与删除文件的。

3.1   列出文件

3.1.1 在HDFS中API提供listStatus()方法实现列出目录内容,其中可传入文件或目录。

FIleStatus[]  status = fs.listStatus(Path f);

3.1.2 此外还提供了FileUtil工具包,来实现对文件的其他操作,

 Path[] listPaths = FileUtil.stat2Paths(status);//直接将FileStatus数组提取数据,形成Path 

3.2  删除文件

同样hdfs中API提供delete()方法来上出文件。

public boolean delete(Path f,boolean recursive)throws IOException

delete中的两个参数:若f为空文件或空目录,可忽略recursion 的值;若f为非空文件,且recursion的值为true,其内容才会被删除。

package step4;


import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;



public class FileSystemDelete {
	
	public static void main(String[] args) throws IOException {
		//请在 Begin-End 之间添加代码,完成本关任务。
        /********* Begin *********/
    	String uri = "hdfs://localhost:9000/";
        String path1 = "hdfs://localhost:9000/tmp";
        String path2 = "hdfs://localhost:9000/user/hadoop";
        String path3 = "hdfs://localhost:9000/tmp/test";
        String path4 = "hdfs://localhost:9000/usr";
        Configuration config = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri),config);
        fs.delete(new Path(path2),true);  //删除文件
		fs.delete(new Path(path3),true);
        fs.delete(new Path(path4),true);
		Path[] paths = {new Path(uri),new Path(path1)};  //将两个路径放入paths数组中
        FileStatus[] status = fs.listStatus(paths);      //列出文件内容
        Path[] listPaths = FileUtil.stat2Paths(status);  //直接从FileStatus数组中提取数据,形成一个listPaths
        for(Path path: listPaths){            //使用一个列表增强式来逐个输出文件内容
            System.out.println(path);
        }
		
		/********* End *********/
	}
}

*****Don't aim for success if you really want,just stick to what you love and believe in,and it will come naturally!   ------少一些功利主义的追求,多一些不为什么的坚持******

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值