Java操作HDFS

Java操作HDFS

导入所需配置文件

在这里插入图片描述

代码

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.Test;
import java.io.IOException;

public class Demo
{
    FileSystem fs = null;
    //声明构造代码块
    {
        Configuration conf = new Configuration();
        try
        {
            fs = FileSystem.get(conf);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    //创建新文件夹
    @Test
    public void mkdir() throws IOException
    {
        Path path = new Path("/test");
        fs.mkdirs(path);
        fs.close();
        System.out.println("创建成功!");
    }


    //上传文件
    @Test
    public void put() throws IOException
    {
        fs.copyFromLocalFile(new Path("D:\\IntelliJ_IDEA_2019.2.3\\Projects\\Hadoop\\HadoopDemo1\\src\\main\\java\\com\\test1\\getEmp.txt"),
                new Path("/test"));
        fs.close();
        System.out.println("上传完成!");
    }


    //下载文件
    @Test
    public void get() throws IOException
    {
        //下载下来并删除源文件(则第一个参数设置为 : true)
        fs.copyToLocalFile(false, new Path("/test/getEmp.txt"),
                new Path("D:\\IntelliJ_IDEA_2019.2.3\\Projects\\Hadoop\\OperationHDFS\\src\\main\\java\\com"), true);
        fs.close();
        System.out.println("下载成功!");
    }


    //删除 文件 或 文件夹
    @Test
    public void delete() throws IOException
    {
        fs.delete(new Path("/test"), true);
        fs.close();
        System.out.println("删除成功!");
    }


    //修改文件名
    @Test
    public void rename() throws IOException
    {
        fs.rename(new Path("/test"), new Path("/testdemo"));
        fs.close();
        System.out.println("更名成功!");
    }


    //查看文件
    @Test
    public void listFile() throws IOException
    {
        RemoteIterator<LocatedFileStatus> listFile = fs.listFiles(new Path("/test/getEmp.txt"), true);
        while (listFile.hasNext())
        {
            //获取文件
            LocatedFileStatus file = listFile.next();
            //获取文件中的块
            BlockLocation[] locations = file.getBlockLocations();
            for (BlockLocation location : locations)
            {
                System.out.println("块信息 : " + location);

                String[] hosts = location.getHosts();
                for (String host : hosts)
                {
                    System.out.println("端口 : " + host);
                }

                String[] names = location.getNames();
                for (String name : names)
                {
                    System.out.println("地址 : " + name);
                }

                System.out.println("文件大小 : " + location.getLength());
            }
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值