第4关:HDFS-JAVA接口之删除文件

简介: 第4关:HDFS-JAVA接口之删除文件

任务描述


本关任务:删除HDFS中的文件和文件夹。


相关知识


为了完成本关任务,你需要掌握:1.如何使用API来删除文件,2.如何列出指定目录下的文件和文件夹。


列出文件


我们在开发或者维护系统时,经常会需要列出目录的内容,在HDFS的API中就提供了listStatus()方法来实现该功能。


public FileStatus[] listStatus(Path f)throws IOException
public FileStatus[] listStatus(Path f,PathFilter filter)throws IOException
public FileStatus listStatus(Path[] files)throws IOException
public FileStatus() listStatus(Path[] files,PathFilter filter)throws IOException
————————————————
版权声明:本文为CSDN博主「真题OK撒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_51916951/article/details/123585393


当传入参数是一个文件时,他会简单的转变成以数组方式返回长度为1FileStatus对象,当传入参数是一个目录时,则返回0或多个FileStatus对象,表示此目录中包含的文件和目录。


接下来通过一个例子,来体验一下listStatus()方法的使用:

a4c00357c43130c7288db86f42666ebd.png


在命令行启动hadoop,编写代码,点击评测可以直接查看结果。


d3acc9e4f55e2a80f8f1ac1299c6f9f2.png


显示了hdfs根目录下的文件夹与user目录下的文件夹。


删除文件


使用FileSystemdelete()方法可以永久性删除文件或目录。


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


如果f是一个文件或者空目录,那么recursive的值可以忽略,当recursize的值为true,并且p是一个非空目录时,非空目录及其内容才会被删除(否则将会抛出IOException异常)。


接下来我们通过一个例子,来查看该方法如何使用。


fe3ce4998d2f11e4078554ccac8e9dee.png


编写代码,点击评测,可以看到如下结果:


24eeab348aafda23bcda82e167bcfab4.png


可以看到/user/hadoop/目录已经被删除了。


编程要求


在右侧代码区填充代码,实现如下功能:


  • 删除HDFS/user/hadoop/目录(空目录);
  • 删除HDFS/tmp/test/目录(非空目录);
  • 列出HDFS根目录下所有的文件和文件夹;
  • 列出HDFS/tmp/的所有文件和文件夹。


public class FileSystemDelete { 
public static void main(String[] args) throws IOException {
  //请在 Begin-End 之间添加代码,完成本关任务。
    /********* Begin *********/
    String hadoop = "hdfs://localhost:9000/user/hadoop";
    String test = "hdfs://localhost:9000/tmp/test";
    String root = "hdfs://localhost:9000/";
    String tmp = "hdfs://localhost:9000/tmp";
    Configuration config = new Configuration();
    FileSystem fs = FileSystem.get(URI.create(root), config);
    fs.delete(new Path(hadoop), true);
    fs.delete(new Path(test), true);
    Path[] paths = {new Path(root), new Path(tmp)};
    FileStatus[] status = fs.listStatus(paths);
    Path[] listPaths = FileUtil.stat2Paths(status);
    for (Path path: listPaths) {
        System.out.println(path);
    }
  /********* End *********/
}
}


测试说明


HDFS的文件夹在你点击评测是会通过脚本自动创建,不需要你自己创建哦,依照题意编写代码点击评测即可。


预期输出:


128a7ffc3f6cf9ad1673d290f422873f.png



开始你的任务吧,祝你成功!

目录
相关文章
|
23天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
58 9
|
27天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
104 3
|
2月前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
34 2
|
14天前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
19 2
|
19天前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
42 3
|
18天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
55 1
|
18天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
35 1
|
18天前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
32 1
|
23天前
|
Java Android开发
Eclipse 创建 Java 接口
Eclipse 创建 Java 接口
25 1
|
28天前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
39 1