packagecom.zy.hdfs;importjava.io.IOException;importjava.net.URI;importjava.net.URISyntaxException;importjava.util.Iterator;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileStatus;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.LocatedFileStatus;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.fs.RemoteIterator;importorg.junit.Before;importorg.junit.Test;public classtest {public static void main(String[] args) throwsException {//上传//1实例化configuration
Configuration configuration = newConfiguration();//-------------------//设置一些属性
configuration.set("dfs.replication", "2");//2个副本
configuration.set("dfs.blocksize", "80m");//按照80m切分//----------------------//2.获取操作文件系统的客户端实例
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");//3.执行上传操作 (src 本地资源 ,dst 上传目的地)
fs.copyFromLocalFile(new Path("C:\\Users\\Administrator\\Desktop\\wc.txt"), new Path("/"));//两次上传一样的会被覆盖//4.关闭链接
fs.close();
}
@Testpublic void download() throwsException{//下载
Configuration configuration= newConfiguration();
FileSystem fs= FileSystem.get(new URI("hdfs://192.168.64.111:9000"), configuration, "root");
fs.copyToLocalFile(false, new Path("/jdk-8u141-linux-x64.tar.gz"), new Path("E://jdk-8u141-linux-x64.tar.gz"), true);
fs.close();
}//----------------
FileSystem fs=null;
@Before//在每次运行junit时先执行
public void before() throwsException{
System.out.println("11111");
Configuration configuration= newConfiguration();
fs= FileSystem.get(new URI("hdfs://192.168.64.111:9000/"), configuration, "root");
}//---------------
@Testpublic void delete() throws Exception{//删除
fs.delete(new Path("/弹性表达式.doc"), true);//为true删除文件夹及里面的内容,false只能删除空的文件夹
fs.close();
}
@Testpublic void mkdir() throws Exception{//创建目录
fs.mkdirs(new Path("/a/b/c"));
fs.close();
}
@Testpublic void list() throwsException{
FileStatus[] listStatus= fs.listStatus(new Path("/"));//不会递归进去
for(FileStatus fileStatus : listStatus) {if(fileStatus.isFile()){
System.out.println("文件名:"+fileStatus.getPath().toString());
}else{
System.out.println("目录:"+fileStatus.getPath().toString());
}
}
fs.close();
}
@Testpublic void list2() throws Exception{//递归遍历出所有文件
RemoteIterator listFiles = fs.listFiles(new Path("/"), true);//为true,递归遍历
while(listFiles.hasNext()){
LocatedFileStatus next=listFiles.next();
System.out.println(next.toString());
System.out.println("文件块尺寸"+next.getBlockSize());
}
}
}