JAVA语言操作hdfs的文件增删改查实例教程
小标 2018-11-05 来源 : 阅读 1094 评论 0

摘要:本文主要向大家介绍了JAVA语言操作hdfs的文件增删改查实例教程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言操作hdfs的文件增删改查实例教程,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

package cn.itcast.hadoop.hdfs;

 

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.URI;

 

import org.apache.commons.io.IOUtils;

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.LocatedFileStatus;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.RemoteIterator;

import org.junit.Before;

import org.junit.Test;

 

public class HdfsUtil {

     

    FileSystem fs = null;

 

     

    @Before

    public void init() throws Exception{

         

        //读取classpath下的xxx-site.xml 配置文件,并解析其内容,封装到conf对象中

        Configuration conf = new Configuration();

         

        //也可以在代码中对conf中的配置信息进行手动设置,会覆盖掉配置文件中的读取的值

        conf.set("fs.defaultFS", "hdfs://weekend110:9000/");

         

        //根据配置信息,去获取一个具体文件系统的客户端操作实例对象

        fs = FileSystem.get(new URI("hdfs://weekend110:9000/"),conf,"hadoop");

         

         

    }

     

     

     

    /**

     * 上传文件,比较底层的写法

     * 

     * @throws Exception

     */

    @Test

    public void upload() throws Exception {

 

        Configuration conf = new Configuration();

        conf.set("fs.defaultFS", "hdfs://weekend110:9000/");

         

        FileSystem fs = FileSystem.get(conf);

         

        Path dst = new Path("hdfs://weekend110:9000/aa/qingshu.txt");

         

        FSDataOutputStream os = fs.create(dst);

         

        FileInputStream is = new FileInputStream("c:/qingshu.txt");

         

        IOUtils.copy(is, os);

         

 

    }

 

    /**

     * 上传文件,封装好的写法

     * @throws Exception

     * @throws IOException

     */

    @Test

    public void upload2() throws Exception, IOException{

         

        fs.copyFromLocalFile(new Path("c:/qingshu.txt"), new Path("hdfs://weekend110:9000/aaa/bbb/ccc/qingshu2.txt"));

         

    }

     

     

    /**

     * 下载文件

     * @throws Exception 

     * @throws IllegalArgumentException 

     */

    @Test

    public void download() throws Exception {

         

        fs.copyToLocalFile(new Path("hdfs://weekend110:9000/aa/qingshu2.txt"), new Path("c:/qingshu2.txt"));

 

    }

 

    /**

     * 查看文件信息

     * @throws IOException 

     * @throws IllegalArgumentException 

     * @throws FileNotFoundException 

     * 

     */

    @Test

    public void listFiles() throws FileNotFoundException, IllegalArgumentException, IOException {

 

        // listFiles列出的是文件信息,而且提供递归遍历

        RemoteIterator files = fs.listFiles(new Path("/"), true);

         

        while(files.hasNext()){

             

            LocatedFileStatus file = files.next();

            Path filePath = file.getPath();

            String fileName = filePath.getName();

            System.out.println(fileName);

             

        }

         

        System.out.println("---------------------------------");

         

        //listStatus 可以列出文件和文件夹的信息,但是不提供自带的递归遍历

        FileStatus[] listStatus = fs.listStatus(new Path("/"));

        for(FileStatus status: listStatus){

             

            String name = status.getPath().getName();

            System.out.println(name + (status.isDirectory()?" is dir":" is file"));

             

        }

         

    }

 

    /**

     * 创建文件夹

     * @throws Exception 

     * @throws IllegalArgumentException 

     */

    @Test

    public void mkdir() throws IllegalArgumentException, Exception {

 

        fs.mkdirs(new Path("/aaa/bbb/ccc"));

<div class="line number    

   


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程