• hadoop学习记录(二)HDFS java api


    FSDateinputStream 对象

    FileSystem对象中的open()方法返回的是FSDateInputStream对象,改类继承了java.io.DateInoutStream接口。支持随机访问

    Seekable接口

    支持在文件中找到指定位置,并提供一个查询当前位置相对于文件起始位置偏移量的查询方法。

    public interface Seekable{
        //seek()可以移到文件中任意一个绝对位置
        void seek(long pos);
        long getPos();
        boolean  seekToNewSource(long targetPos);
    }
    

     需要注意的是:seek()方法是一个相对高开销的操作,需要慎重使用。如要访问文件,还是用流数据如MapReduce,而不是大量的seek()!

    写入数据

    FIleSystem有新建文件夹的方法

    • public FSDaateOutputStream create(path f);该方法指定一个path对象,如果不存在则自动创建有时候我们希望文件夹不存在时就报出失败而不是创建完写入,这时就需要先调用exists()来判断。
    • 另一个方法是append(),允许在一个已有文件的末尾追加数据
    • progress()方法用于传递回调接口,可以通知应用数据写入datenode的进度。
     1 String localSrc = args[0];
     2 String dst = args[1];
     3 //获取文件读取流
     4 InputStream in = new InputStream(new FileInputStream(localSrc));
     5 
     6 Configuration conf = new Configuration();
     7 FileSystem fs = FileSystem.get(URI.create(dst),conf);
     8 OutputStream out  = fs,create(new Path(dst),new Progressable(){
     9     public void progress(){
    10        Syso.("running!")
    11     }
    12 });

    FSDataOutputStream对象

    该对象不允许在写入文件时定位,只能顺序写入,追加在文件末尾。

    FileStatus对象

    FIleSystem.getFileStatus()方法可以返回一个文件的信息和状态。包括文件长度,块大小,副本,修改时间,所有者及权限。

  • 相关阅读:
    [UE4]创建对象的的几种姿势(C++)
    [UE4]IES光源概述文件
    [UE4]C++ STL总结
    [UE4]C++中引用(&)的用法和应用实例
    [UE4]单映射:TMap容器,字典表
    [UE4]集合:TSet容器
    [UE4]动态数组:TArray容器
    [UE4] 虚幻4学习---UE4中的字符串转换
    [UE4]使用PlayerController获取鼠标点击时的坐标
    [UE4]C 语言动态数组
  • 原文地址:https://www.cnblogs.com/kinsomy/p/5572680.html
Copyright © 2020-2023  润新知