在 Java中操作 HDFS,首先要获得一个客户端实例(HDFS的所以操作都要依赖这个客户端实例来进行):
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
1.建立文件夹
@Test
public void testMkdir() throws Exception {
System.out.println(fs.mkdirs(new Path("/ccc/bbb/aaa"))); }
2.上传文件
@Test
public void testCopyFromLocal() throws Exception {
Path src = new Path("C:/software/hadoop-eclipse-plugin-2.7.7.jar");
Path dst = new Path("/");
fs.copyFromLocalFile(src, dst); }
3.下载文件
* 下载文件
*/
@Test
public void testCopyToLocal() throws Exception {
fs.copyToLocalFile(new Path("/wordcount/input/helloWorld.txt"), new Path("c:/"));
}
4.删除文件
* 删除文件 或者 文件夹
*/
@Test
public void testRemoveFileOrDir() throws Exception {
fs.delete(new Path("/ccc/bbb"), true); }
5.重命名文件
* 重命名文件 或者 文件夹
*/
@Test
public void testRenameFileOrDir() throws Exception {
fs.rename(new Path("/hadoop-eclipse-plugin-2.6.4.jar"), new Path("/eclipsePlugin.jar"));
}
6. 查看目录信息,只显示该文件夹下的文件信息
* 查看指定文件下 的 文件 或者 文件夹。 不包含子文件夹下的内容
*/
@Test
public void testListStatus() throws Exception {
FileStatus[] listStatus = fs.listStatus(new Path("/wordcount"));
String flag = "";
for (FileStatus status : listStatus) {
if (status.isDirectory()) {
flag = "Directory";
} else {
flag = "File";
}
System.out.println(flag + "\t" + status.getPath());
}
}
7.查看文件及文件夹信息
* 显示 指定文件夹下 所有的文件
*/
@Test
public void testListFiles() throws Exception {
RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/wordcount"), true);
while (listFiles.hasNext()) {
LocatedFileStatus fileStatus = listFiles.next();
System.out.print(fileStatus.getPath() + "\t");
System.out.print(fileStatus.getPath().getName() + "\t");
System.out.print(fileStatus.getBlockSize() + "\t");
System.out.print(fileStatus.getPermission() + "\t");
System.out.print(fileStatus.getReplication() + "\t");
System.out.println(fileStatus.getLen());
BlockLocation[] blockLocations = fileStatus.getBlockLocations();
for (BlockLocation bl : blockLocations) {
System.out.println("Block Length:" + bl.getLength() + " Block OffSet:" + bl.getOffset());
String[] hosts = bl.getHosts();
for (String str : hosts) {
System.out.print(str + "\t");
}
System.out.println();
}
System.out.println("---------------------------------------");
}
}