FileSystem.get(url,configuration,user);//获取连接
CopyFromLocalFile();//上传文件到hdfs
CopyToLocal();//下载文件到本地
rename(path1,path2)//重新命名文件
delete(path1,true);//删除文件名
fs.listStatus(new Path());//用来判断文件的种类 是目录不是文件夹
iterator = fs.listFiles(path1, true);//参数1路径 参数2 递归 获取文件的相关的一些信息
BlockLocation[] blocakLocations=fileStatus.getBlockLocations();
LocatedFileStatus fileStatus = iterator.next();//获取每个文件从而可以获取他们的数据元信息
fileStatus.getPermission();//获取权限
fileStatus.getGruop();//获取所属组
fileStatus.getOwner();//获取所属用户
fileStatus.getLen();//
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
public class testCopyFromLocalFile{
FileSystem fs;
@Before
public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {
// 1 获取文件系统
URI url=new URI("hdfs://192.168.48.128:9000");
// 优先级 修改一些东西 configuration.set-->hdf-site.xml--->修改集群中的配置文件
Configuration configuration = new Configuration();
configuration.set("dfs.replication", "2");//可以修改父本的个数
String user="dev1";
fs = FileSystem.get(url, configuration, user);
System.out.println("intit....");
}
// 2 上传文件到HDFS
@Test
public void CopyFromLocalFiletest() throws Exception{
// path1 Windows系统的本地环境的文件路径
// path2 hdfs文件路径
Path path1=new Path("/opt/module/hadoop-2.7.2/word.txt");
Path path2=new Path("/user/dev1/input");
fs.copyFromLocalFile(path1,path2);
}
//反hdfs文件复制到时本地
@Test
public void CopyToLocalFiletest() throws Exception{
Path path1=new Path("/user/dev1/input2/word.txt");
Path path2=new Path("e:/aaa.txt");
// 参数1 是否删除
fs.copyToLocalFile(true,path1,path2);
}
// 删除文件
@Test
public void deletetest() throws Exception{
Path path = new Path("/opt/module/hadoop-2.7.2/word.txt");
fs.delete(path,true);//true强制删除
}
// 文件重命名
@Test
public void renametest() throws IOException {
Path path1=new Path("/user/dev1/input2/word.txt");
Path path2=new Path("/user/dev1/input2/newword.txt");
fs.rename(path1,path2);
}
// 遍历指定目录的元数据与信息
@Test
public void listFilestest() throws IOException {
Path path1=new Path("/user/dev1/input/");
RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(path1, true);//参数1路径 参数2 递归
while(iterator.hasNext()){
// 获得每个文件
LocatedFileStatus fileStatus = iterator.next();
// 权限
System.out.println(fileStatus.getPermission()+"\t");
// 所有者
System.out.println(fileStatus.getOwner()+"\t");
// 所属组
System.out.println(fileStatus.getGroup() + "\t");
// 长度
System.out.println(fileStatus.getLen() + '\t');
// 数据块的信息
BlockLocation[] blocakLocations=fileStatus.getBlockLocations();
System.out.println(Arrays.toString(blocakLocations));
}
}
@After
public void test() throws Exception{
// 3 关闭资源
fs.close();
System.out.println("destory....");
}
}