zoukankan      html  css  js  c++  java
  • 文件相关API

    package HDFS;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.*;
    import org.apache.hadoop.io.IOUtils;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * @Author:Dapeng
     * @Discription:
     * @Date:Created in 上午 10:37 2018/10/25 0025
     */
    public class HDFSAPI {
        /**
         * 生成文件系统
         * */
        public static FileSystem getHadoopFileSystem() {
            Configuration conf  = new Configuration();
            conf.set("fs.defaultFS","hdfs://192.168.52.135:9000");
            // conf.set("dfs.replication","1");
            FileSystem fileSystem = null;
            try {
                fileSystem = FileSystem.get(conf);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return fileSystem;
        }
    
        /**
         * 创建目录
         * */
        public static boolean createPath(String pathName)  {
            boolean result = false;
    
            //获取文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //调用 makdirs创建目录
            Path path = new Path(pathName);
            try {
                result = fileSystem.mkdirs(path);
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //将文件系统关闭
                close(fileSystem);
            }
    
            return result;
        }
    
        /**
         * 创建文件写数据
         * */
        public static boolean createFile(String fileName,String content){
            boolean result =  false;
            FileSystem fileSystem = getHadoopFileSystem();
            Path path = new Path(fileName);
            try {
                //创建文件的函数
                FSDataOutputStream fsDataOutputStream = fileSystem.create(path);
                //写入数据
                fsDataOutputStream.writeUTF(content);
                result = true;
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                close(fileSystem);
            }
            return result;
        }
    
        /**
         * 上传已有的文件
         *
         * */
        public static boolean putFileToHDFS2(String srcPathName,String dstPathName){
            boolean result = false;
            //获得文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //调用copyFromLocalFile
            try {
                fileSystem.copyFromLocalFile(new Path(srcPathName),new Path(dstPathName));
                result = true;
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //关闭文件系统
                close(fileSystem);
            }
            return result;
        }
        /**
         * @Author:Dapeng
         * @Description:    上传文件通过输入输出流
         */
        public static boolean putFileToHDFS(String srcPathName , String dstPathName){
            boolean result = false;
            //获取文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //上传
            try {
                //创建一个到HDFS的输出流
                FSDataOutputStream out = fileSystem.create(new Path(dstPathName));
                //创建一个本地java的输入流
                FileInputStream in = new FileInputStream(srcPathName);
    
                //通过一个IOUtilsd的copyBytes方法传递数据流
                IOUtils.copyBytes(in,out,4096,true);
                result = true;
    
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //关闭文件系统
                close(fileSystem);
            }
            return result;
        }
        /**
         * @Author:Dapeng
         * @Description:        文件元数据
         */
        public static FileStatus[] list(String dstPathName){
            FileStatus[] list = null;
            //获取文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //获取元数据信息
            try {
                list = fileSystem.listStatus(new Path(dstPathName));
                for(FileStatus fileStatus : list) {
                    //可以返回相关的一些信息
    //                fileStatus.isDirectory();
    //                fileStatus.isFile();
    //                fileStatus.getPath().toString();
    //                fileStatus.getReplication();
                    System.out.println(fileStatus);
                }
    
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                //关闭文件系统
                close(fileSystem);
            }
    
            return list;
        }
        /**
         * @Author:Dapeng
         * @Description:    下载文件通过输入输出流
         */
        public static boolean getFileFromHDFS(String srcPathName , String dstPathName){
            boolean result = false;
            //获取文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //下载文件
            try {
                //读入到内存
                FSDataInputStream in = fileSystem.open(new Path(srcPathName));
                //写入到文件
                FileOutputStream out = new FileOutputStream(dstPathName);
                //通过工具类链接两者
                IOUtils.copyBytes(in,out,4096,true);
    
                result = true;
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                //关闭文件系统
                close(fileSystem);
            }
    
            return result;
    
        }
    
        /**
         * @Author:Dapeng
         * @Description:    删除文件
         */
        public static boolean delete(String path){
            boolean result = false;
            //获取文件系统
            FileSystem fileSystem = getHadoopFileSystem();
    
            //删除,第二个参数是否递归的删除
            try {
                fileSystem.delete(new Path(path) ,true);
                result = true;
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                close(fileSystem);
            }
            return result;
            //关闭文件系统
        }
        /**
         * @Author:Dapeng
         * @Description:    关闭文件系统
         */
        public static void close(FileSystem fileSystem){
            try {
                fileSystem.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    SQL时间戳的使用
    Java中利用MessageFormat对象实现类似C# string.Format方法格式化
    XML中PCDATA与CDATA的区别
    树行控件TreeView 在WinForm下 怎么实现重命名功能
    PHP+MySQL存储数据出现中文乱码的问题
    C#创建一个Windows Service
    SQL2008配置管理工具服务显示远程过程调用失败
    C#如何以管理员身份运行程序
    在APACHE服务器上的访问方式上去除index.php
    开发winform程序,在拖拽控件大小时,VS会卡死
  • 原文地址:https://www.cnblogs.com/da-peng/p/9848303.html
Copyright © 2011-2022 走看看