1.使用FileSystem类需要导入jar包

  解压hadoop-2.7.7.tar.gz

  复制如下三个jar包和lib下所有jar包到项目文件下的lib文件

  

2.查看文件信息

@Test
public void readListFiles() throws Exception {
// 1 创建配置信息对象
Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),configuration, "root"); // 思考:为什么返回迭代器,而不是List之类的容器
RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true); while (listFiles.hasNext()) {
LocatedFileStatus fileStatus = listFiles.next();
System.out.println(fileStatus.getPath().getName()); //路径
System.out.println(fileStatus.getBlockSize()); //块
System.out.println(fileStatus.getPermission()); //权限
System.out.println(fileStatus.getLen()); //文件大小
System.out.println(fileStatus.isFile()); //是不是一个文件
System.out.println(fileStatus.isDirectory()); //是不是一个目录 BlockLocation[] blockLocations = fileStatus.getBlockLocations(); for (BlockLocation bl : blockLocations) { System.out.println("block-offset:" + bl.getOffset()); String[] hosts = bl.getHosts(); for (String host : hosts) {
System.out.println(host);
}
} System.out.println("----------------------------");
}
}

3.文件下载(get)

 @Test
public void download() {
Configuration conf=new Configuration();
try
{
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),conf);
FSDataInputStream in = fileSystem.open(new Path("/upload.txt"));
FileOutputStream out = new FileOutputStream(new File("d://lib//updoad.txt"));
byte[]b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1) {
out.write(b,0,len);
}
in.close();
out.close();
} catch (IOException | URISyntaxException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
} }

4.上传文件(create)

 @Test
public void upload() {
Configuration conf=new Configuration();
try
{
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),conf);
FSDataOutputStream out = fileSystem.create(new Path("/jetbrains-agent.jar"));
FileInputStream in=new FileInputStream(new File("d:\\jetbrains-agent.jar"));
byte[]b=new byte[10240];
int len=0;
while((len=in.read(b))!=-1) {
out.write(b,0,len);
}
in.close();
out.close();
} catch (IOException | URISyntaxException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

5.重命名(rename)

 @Test
public void mv() {
Configuration conf=new Configuration();
try
{
FileSystem fileSystem = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),conf);
fileSystem.rename(new Path("/hdp01"), new Path("/HDP01"));
fileSystem.close();
} catch (IOException | URISyntaxException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

6.文件夹删除

@Test
public void deleteAtHDFS() throws Exception{
// 1 创建配置信息对象
Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),configuration, "root");   //2 删除文件夹 ,如果是非空文件夹,参数2是否递归删除,true递归
  fs.delete(new Path("hdfs://192.168.0.xxx:9000/upload/output"), true);
 }

7.创建文件夹

@Test
public void mkdirAtHDFS() throws Exception{
// 1 创建配置信息对象
Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),configuration, "root"); //2 创建目录
fs.mkdirs(new Path("hdfs://192.168.0.xxx:9000/upload/output"));
}

8.遍历所有文件状态

@Test
public void findAtHDFS() throws Exception, IllegalArgumentException, IOException{ // 1 创建配置信息对象
Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.0.xxx:9000"),configuration, "root"); // 2 获取查询路径下的文件状态信息
FileStatus[] listStatus = fs.listStatus(new Path("/")); // 3 遍历所有文件状态
for (FileStatus status : listStatus) {
if (status.isFile()) {
System.out.println("f--" + status.getPath().getName());
} else {
System.out.println("d--" + status.getPath().getName());
}
}
}

Hadoop的FlieSystem类的使用的更多相关文章

  1. Hadoop之TaskInputOutputContext类

    在MapReduce过程中,每一个Job都会被分成若干个task,然后再进行处理.那么Hadoop是怎么将Job分成若干个task,并对其进行跟踪处理的呢?今天我们来看一个*Context类——Tas ...

  2. Hadoop之TaskAttemptContext类和TaskAttemptID类

    先来看看TaskAttemptContext的类图 : Figure1:TaskAttemptContext类图 用户向Hadoop提交Job(作业),Job在JobTracker对象的控制下执行.J ...

  3. hadoop中Text类 与 java中String类的区别

    hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的 ...

  4. Hadoop中Writable类之四

    1.定制Writable类型 Hadoop中有一套Writable实现,例如:IntWritable.Text等,但是,有时候可能并不能满足自己的需求,这个时候,就需要自己定制Writable类型. ...

  5. Hadoop中Writable类之三

    1.BytesWritable <1>定义 ByteWritable是对二进制数据组的封装.它的序列化格式为一个用于指定后面数据字节数的整数域(4个字节),后跟字节本身. 举个例子,假如有 ...

  6. Hadoop中Writable类之二

    1.ASCII.Unicode.UFT-8 在看Text类型的时候,里面出现了上面三种编码,先看看这三种编码: ASCII是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语和其他西欧语言.它是现 ...

  7. hadoop之mapper类妙用

    1. Mapper类 首先 Mapper类有四个方法: (1) protected void setup(Context context) (2) Protected void map(KEYIN k ...

  8. Hadoop中Writable类

    1.Writable简单介绍 在前面的博客中,经常出现IntWritable,ByteWritable.....光从字面上,就可以看出,给人的感觉是基本数据类型 和 序列化!在Hadoop中自带的or ...

  9. 琐碎-关于hadoop的GenericOptionsParser类

    GenericOptionsParser 命令行解析器 是hadoop框架中解析命令行参数的基本类.它能够辨别一些标准的命令行参数,能够使应用程序轻易地指定namenode,jobtracker,以及 ...

随机推荐

  1. ubuntu 中加速pip指令下载插件的速度

    在使用pip下载时很多时候下载速度特别慢,时不时就会发生timeout. 这是因为安装源与本机之间网络不畅导致,其实可以自己指定pip的下载来源,就像指定ubuntu更新源那样. 接下来谈谈步骤: 1 ...

  2. HDU - 6201 transaction transaction transaction(spfa求最长路)

    题意:有n个点,n-1条边的无向图,已知每个点书的售价,以及在边上行走的路费,问任选两个点作为起点和终点,能获得的最大利益是多少. 分析: 1.从某个结点出发,首先需要在该结点a花费price[a]买 ...

  3. C++ AVFrame转BMP 或者其他形式转化也可

    void CffmpegUIDlg::SaveAsBMP(AVFrame *pFrameRGB, int width, int height, int index, int bpp) { BITMAP ...

  4. cf 543 D. Road Improvement

    (懒得想了,,又是DP) #include<bits/stdc++.h> #define N 200005 #define LL long long #define inf 0x3f3f3 ...

  5. 148-PHP strip_tags函数,剥去字符串中的 HTML 标签(二)

    <?php //定义一段包含PHP代码的字符串 $php=<<<PHP 这里是PHP代码的开始 <?php echo "hello!"; PHP; $ ...

  6. phpstudy后门复现(9.29第十五天)

    本人转自:https://www.cnblogs.com/yuanshu/p/11613796.html 一.漏洞位置 程序自带的PHP的php_xmlrpc.dll模块中有隐藏后门,受影响的版本有p ...

  7. Atom 插件推荐

    (1)atom-ternjs : js(e6)的自动补充 (2)key-binding-mode : atom 快捷键管理 (3)pre-view : pdf预览 (4)activate-power- ...

  8. CSS - 实现荧光边框

    1,index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  9. 使用eclipse创建maven时遇到的问题

    转自https://www.cnblogs.com/hongmoshui/p/7994759.html   1.在eclipse中用maven创建项目,右键new>>Maven Proje ...

  10. (排序)P1177 【模板】快速排序

    题解: 这道题用传统快排(如下所示)的结果就是最后三个点TLE: 如果永远取第一个元素作为枢轴的话,在数组已经有序的情况下每次划分都将得到最坏的结果,时间复杂度退化为O(n^2).因为其中一个子序列每 ...