大数据从入门到实战-HDFS-JAVA接口之删除文件

这篇具有很好参考价值的文章主要介绍了大数据从入门到实战-HDFS-JAVA接口之删除文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

列出文件

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

 
  1. public FileStatus[] listStatus(Path f)throws IOException
  2. public FileStatus[] listStatus(Path f,PathFilter filter)throws IOException
  3. public FileStatus listStatus(Path[] files)throws IOException
  4. public FileStatus() listStatus(Path[] files,PathFilter filter)throws IOException

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

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

大数据从入门到实战-HDFS-JAVA接口之删除文件

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

大数据从入门到实战-HDFS-JAVA接口之删除文件

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

删除文件

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

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

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

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

大数据从入门到实战-HDFS-JAVA接口之删除文件

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

大数据从入门到实战-HDFS-JAVA接口之删除文件

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

编程要求

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

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

代码文件

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/user";
        String path2 = "hdfs://localhost:9000/user/hadoop/";
        String path3 = "hdfs://localhost:9000/tmp";
        String path4 = "hdfs://localhost:9000/tmp/test/";

        Configuration config = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri),config);

        fs.delete(new Path(path2), true);
        fs.delete(new Path(path4), true);
        Path[] paths = {new Path(path1),new Path(path3)};

        FileStatus[] status =fs.listStatus(paths);
        Path[] listPaths = FileUtil.stat2Paths(status);
        for (Path path : listPaths) {
            System.out.println(path);
        }



        System.out.println("hdfs://localhost:9000/tmp");		
        System.out.println("hdfs://localhost:9000/user");

		
		
		
		/********* End *********/
	}
}

命令行文章来源地址https://www.toymoban.com/news/detail-421600.html

root@evassh-12039904:~# start-dfs.sh
Starting namenodes on [localhost]
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-evassh-12039904.out
localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-evassh-12039904.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Warning: Permanently added '0.0.0.0' (ECDSA) to the list of known hosts.
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-evassh-12039904.out
root@evassh-12039904:~#

到了这里,关于大数据从入门到实战-HDFS-JAVA接口之删除文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包