使用JavaAPI获取文件信息
Posted JasonPeng1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JavaAPI获取文件信息相关的知识,希望对你有一定的参考价值。
package demo; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.junit.Test; public class TestMetaData { @Test public void test1() throws Exception{ Configuration conf = new Configuration(); conf.set("fs.defaultFS","hdfs://bigdata11:9000"); FileSystem client = FileSystem.get(conf); FileStatus[] fsList = client.listStatus(new Path("/folder1")); for(FileStatus s:fsList) { System.out.println("文件还是目录?"+(s.isDirectory()? "目录" : "文件")); System.out.println(s.getPath().toString()); } } //获取文件的数据块信息 @Test public void test2() throws Exception{ Configuration conf = new Configuration(); conf.set("fs.defaultFS","hdfs://bigdata11:9000"); //创建HDFS的客户端 FileSystem client = FileSystem.get(conf); //获取文件的信息 FileStatus fs = client.getFileStatus(new Path("/folder1/a.txt")); BlockLocation[] blkLocations = client.getFileBlockLocations(fs,0,fs.getLen()); for(BlockLocation b : blkLocations) { //数据块的主机信息:数组,表示同一个数据块的多个副本(冗余)被保存到了不同的主机上 System.out.println(Arrays.toString(b.getHosts())); //获取的数据块的名称 System.out.println(Arrays.toString(b.getNames())); } } }
以上是关于使用JavaAPI获取文件信息的主要内容,如果未能解决你的问题,请参考以下文章
Android获取各个应用程序的缓存文件代码小片段(使用AIDL)
使用javaApi监控 kafka 集群的环境下消费组的积压信息
使用Java API操作HDFS时,_方法用于获取文件列表?
错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段