Hadoop提供了大量的API对文件系统中的文件进行操作,主要包括:

(1)读取文件

(2)写文件

(3)读取文件属性

(4)列出文件

(5)删除文件

1、读取文件

以下示例中,将hdfs中的一个文件读取出来,并输出到标准输出流中。

package org.jediael.hadoopdemo.fsdemo;import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;public class FileSystemDoubleCat {public static void main(String[] args) throws IOException {String fileName = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(fileName), conf);FSDataInputStream in = null;try {in = fs.open(new Path(fileName));IOUtils.copyBytes(in, System.out, 4096, false);in.seek(0);IOUtils.copyBytes(in, System.out, 4096, false);} finally {in.close();}}}

(1)其中FSDataInputStream实现了Seekable接口,可以对文件进行随机定位,但注意,seek()的代价较高,如无必要,尽量少使用。

2、文件复制

package org.jediael.hadoopdemo.fsdemo;import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;public class FileCopy {public static void main(String[] args) throws IOException {String sourceFile = args[0];String destFile = args[1];InputStream in = null;OutputStream out = null;try {//1、准备输入流in = new BufferedInputStream(new FileInputStream(sourceFile));//2、准备输出流Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(destFile), conf);out = fs.create(new Path(destFile));//3、复制IOUtils.copyBytes(in, out, 4096, false);} finally {in.close();out.close();}}}

3、获取文件属性

文件属性以FileStatus对象进行封装,使用FileSystem对象的getFileStatus()方法,可以获取到文件的FileStatus对象。

package org.jediael.hadoopdemo.fsdemo;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.Path;public class FileStatusDemo {public static void main(String[] args) throws IOException {String fileName = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(fileName), conf);//获取FileSystem对象。FileStatus status = fs.getFileStatus(new Path(fileName));System.out.println(status.getOwner()+" "+status.getModificationTime());}}

4、列出某个目录下的文件

使用FileSystem的ListStatus方法,可以获取到某个目录下所有文件的FileStatus对象。

package org.jediael.hadoopdemo.fsdemo;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 ListStatusDemo {public static void main(String[] args) throws IOException {String dir = args[0];Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(dir), conf);FileStatus[] stats =  fs.listStatus(new Path(dir));Path[] paths = FileUtil.stat2Paths(stats);for(Path path : paths){System.out.println(path);}}}

Hadoop文件的基本操作相关推荐

  1. hadoop文件存储位置_Hadoop文件的存储格式实例详解

    sequence文件存储格式 1.txt 纯文本格式,若干行记录.默认用字符编码存储 2.SequenceFile格式(顺序文件格式,可进行切割) key-value 格式进行存储,最终形成的是一个二 ...

  2. C语言中文件的基本操作函数fprintf和fscanf实例介绍

    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分 ...

  3. c语言infile和outfile用法,C语言文件读写基本操作DEMO

    DEMO 来源于<C语言实战105例>中的34例:文件读写基本操作 把infile中的内容写到outfile中去 #include #include int main() { FILE * ...

  4. Hadoop 文件命令

    Hadoop 文件命令 * 文件操作  * 查看目录文件  * $ hadoop dfs -ls /user/cl  *  * 创建文件目录  * $ hadoop dfs -mkdir /user/ ...

  5. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

    文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...

  6. 操作系统之文件管理:6、文件的基本操作(创建文件、打开文件、删除文件、关闭文件、读文件、写文件)

    5.文件的基本操作 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 关闭文件 思维导图 文件操作 创建文件 删除文件 读文件 写文件 打开文件 1.在系统中有一张系统的文件打开表,用 ...

  7. 【王道考研操作系统】—文件的基本操作

    [王道考研操作系统]-文件的基本操作 一.文件的逻辑结构 按文件是否有结构分为:无结构文件.有结构文件两种. 无结构文件:文件内部的数据就是一系列二进制流或字符流组成.又称流式文件,如Windows操 ...

  8. Hadoop文件基础操作命令

    1.查看进程jps 2.进入配置文件(可能路径不同,具体路径以格式化后通知的文件储存路径为主) [root@master ~]# cd /tmp/hadoop-root/dfs/name/curren ...

  9. 文件的基本操作--利用爬取的王者荣耀李信台词进行练习

    文章目录 文件的基本操作 文件打开和关闭 文件打开模式 读取/写入文件 StringIO和BytesIO 内存假文件 上下文管理 os模块 os模块 的目录及文件操作 os.path模块 小练习-爬取 ...

最新文章

  1. Java 发送QQ邮箱邮件
  2. Linux C编程--操作文件结束和错误的判断方法(函数)
  3. 毛坦厂中学是“高考工厂”?白岩松:我做不出嘲讽它的事情!
  4. Asp组件中级入门与精通系列之三
  5. TensorFlow Lite学习笔记
  6. 前端学习(1022):jquery学习目标
  7. Android 申请权限结果返回处理
  8. xercesimpl做什么用的_一体化泵站是用来做什么的有什么用
  9. 计算机普通话培训开班简报,普通话培训第四期简报.doc
  10. 应对雾霾,哪款口罩适合你?
  11. 请问,非计算机专业,只为软考中级,哪一种最容易过?
  12. Java实现UTC时区转换
  13. 【虚拟机数据恢复】VMware ESX SERVER数据恢复案例
  14. Redhawk 如何gds2def?
  15. 手风琴控件android,ExpandableListView实现手风琴效果
  16. centos7搭建开源ERP-PSI
  17. 字段属性——唯一约束
  18. google支持本地ajax,360chrome,google chrome浏览器使用jquery.ajax加载本地html文件
  19. 锐捷交换机时钟同步设置
  20. 本科生学习GNSS算法 中级教程(三)- rtklib多系统多频单点定位算法 - 多频残差计算以及新增配置

热门文章

  1. 螺旋方阵 | 蛇形填数
  2. visual studio code Python终端运行_VS Code 6 月 Python 扩展更新
  3. assert()函数_【工程师分享】避免Xil_Assert系列宏导致的死循环
  4. controller调用controller的方法_你想过 Controller 这些方法里的参数是如何工作的吗?...
  5. postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...
  6. java连接数据库hei_如何黑MySQL5数据库?(来自:http://superhei.blogbus.com)
  7. typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
  8. 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
  9. web站点放入html页面,HTML
  10. html5输入框自动放大镜,JS 仿支付宝input输入显示数字放大镜