概述
Hadoop Java API–FileSystem类的方法,可以在这个官网查看http://hadoop.apache.org/docs/current/api/
1.连接HDFS的代码,查看user/root的文件
conf.set(“fs.defaultFS”, “hdfs://192.168.100.101:8020”)
中的"fs.defaultFS", “hdfs://192.168.100.101:8020” 可以查看hadoop/etc/hadoop中的core-site.xml
package demo;
/************************************************************
1 创建目录mkdir("/idea/");
2.创建文件create("/idea/haha.txt");
3.查看hdfs文件内容read("/idea/text.txt");
4文件重命名moveFile("/idea/haha.txt","/idea/hello.txt");
5.上传文件putFile("G://text.txt","/idea/");
6.下载文件getFile("/idea/abc.txt","G://");
7.查询目录下的所有文件listStatus("/idea/");
8.删除文件deleteFile("/idea/hello.txt");
History:
// 历史修改记录
<author> <time> <version > <desc>
Light 18/7/16 1.0 build this moudle
***********************************************************/
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.*;
public class JavaApi2 {
Configuration conf;
FileSystem filesystem;
@Before
public void before() throws InterruptedException, URISyntaxException, IOException {
conf=new Configuration();
filesystem=FileSystem.get(new URI("hdfs://192.168.100.101:8020"), conf, "root");
}
/**
* junit测试函数
* @throws IOException
*/
@Test
public void Text() throws IOException {
//创建目录
//mkdir("/idea/");
//创建文件
//create("/idea/haha.txt");
//查看hdfs文件内容
//read("/idea/text.txt");
//文件重命名
//moveFile("/idea/haha.txt","/idea/hello.txt");
//上传文件
//putFile("G://text.txt","/idea/");
//下载文件
//getFile("/idea/abc.txt","G://");
//查询目录下的所有文件
//listStatus("/idea/");
//删除文件
//deleteFile("/idea/hello.txt");
}
/**
* 创建目录
* @param path 创建目录的地址(例:/hadoop/)
* @throws IOException
*/
public void mkdir(String path) throws IOException {
//创建hdfs目录
if(filesystem.exists(new Path("/user/root/data")))
{
System.out.println("目录已存在");
}
else
{
boolean result=filesystem.mkdirs(new Path("/user/root/data"));
System.out.println(result);
}
}
/**
* 创建文件
* @param path hdfs文件地址(例:/hadoop/abc.txt)
* @throws IOException
*/
public void create(String path) throws IOException{
//创建文件
if(filesystem.exists(new Path(path)))
{
System.out.println("文件已存在");
}
else
{
FSDataOutputStream outputStream= filesystem.create(new Path(path));
System.out.println("文件创建成功");
}
}
/**
* 查看文件内容
* @param dst hdfs文件地址(例:/hadoop/abc.txt)
* @throws IOException
*/
public void read(String dst) throws IOException {
if(filesystem.exists(new Path(dst)))
{
FSDataInputStream inputstream=filesystem.open(new Path(dst));
InputStreamReader isr=new InputStreamReader(inputstream);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();
while(str!=null){
System.out.println(str);
str=br.readLine();
}
br.close();
isr.close();
inputstream.close();
}
else
{
System.out.println("文件不存在");
}
}
/**
* 将dst1重命名为dst2,也可以进行文件的移动
* @param oldpath 旧名
* @param newpath 新名
*/
public void moveFile(String oldpath, String newpath) {
Path path1 = new Path(oldpath);
Path path2 = new Path(newpath);
try {
if (!filesystem.exists(path1)) {
System.out.println(oldpath + " 文件不存在!");
return;
}
if (filesystem.exists(path2)) {
System.out.println(newpath + "已存在!");
return;
}
// 将文件进行重命名,可以起到移动文件的作用
filesystem.rename(path1, path2);
System.out.println("文件已重命名!");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 上传文件到hdfs
* @param local
* @param dst
*/
public void putFile(String local, String dst) {
try {
// 从本地将文件拷贝到HDFS中,如果目标文件已存在则进行覆盖
filesystem.copyFromLocalFile(new Path(local), new Path(dst));
System.out.println("上传成功!");
// 关闭连接
} catch (IOException e) {
System.out.println("上传失败!");
e.printStackTrace();
}
}
/**
* 下载文件到本地
* @param dst
* @param local
*/
public void getFile(String dst, String local) {
try {
if (!filesystem.exists(new Path(dst))) {
System.out.println("文件不存在!");
} else {
filesystem.copyToLocalFile(new Path(dst), new Path(local));
System.out.println("下载成功!");
}
} catch (IOException e) {
System.out.println("下载失败!");
e.printStackTrace();
}
}
/**
* 显示目录下所有文件
* @param dst
*/
public void listStatus(String dst) {
try {
if (!filesystem.exists(new Path(dst))) {
System.out.println("目录不存在!");
return;
}
// 得到文件的状态
FileStatus[] status = filesystem.listStatus(new Path(dst));
for (FileStatus s : status) {
System.out.println(s.getPath().getName());
}
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除hdfs中的文件
* @param dst
*/
public void deleteFile(String dst) {
try {
if (!filesystem.exists(new Path(dst))) {
System.out.println("文件不存在!");
} else {
filesystem.delete(new Path(dst), true);
System.out.println("删除成功!");
}
} catch (IOException e) {
System.out.println("删除失败!");
e.printStackTrace();
}
}
/**
* 关闭filesyatem
*/
@After
public void destory()
{
try {
filesystem.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
来源:https://www.cnblogs.com/suifengye/p/9319386.html
经过自己操作,并运行成功
package com.pyp.Hdfs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.*;
public class HDFSClient {
Configuration conf;
FileSystem filesystem;
@Before
public void before() throws InterruptedException, URISyntaxException, IOException {
conf=new Configuration();
filesystem=FileSystem.get(new URI("hdfs://192.168.100.101:8020"), conf, "root");
}
/**
* junit测试函数
* @throws IOException
*/
@Test
public void Text() throws IOException {
//创建目录
//创建文件
//查看hdfs文件内容
//文件重命名
//上传文件
//下载文件
//查询目录下的所有文件
//删除文件
}
/**
* 创建目录
* @param path 创建目录的地址(例:/user/hadoop/)
*/
@Test
public void mkdir() throws Exception, IOException {
//创建hdfs 目录
if(filesystem.exists(new Path("/user/hadoop")))
{
System.out.println("目录已存在");
}
else {
boolean result=filesystem.mkdirs(new Path("/user/hadoop"));
System.out.println(result);
System.err.println("目录创建成功");
}
}
/**
* 创建文件
* @param path hdfs文件地址(例:/hadoop/abc.txt)
*/
@Test
public void create() throws IllegalArgumentException, IOException {
//创建文件
if(filesystem.exists(new Path("/user/hadoop/abc.txt")))
{
System.out.println("文件已存在");
}
else
{
FSDataOutputStream outputStream= filesystem.create(new Path("/user/hadoop/abc.txt"));
System.out.println("文件创建成功");
}
}
/**
* 查看文件内容
* @param dst hdfs文件地址(例:/hadoop/abc.txt)
*/
@Test
public void read() throws Exception, IOException {
if(filesystem.exists(new Path("/user/hadoop/abc.txt"))) {
FSDataInputStream input=filesystem.open(new Path("/user/hadoop/data.txt"));
InputStreamReader isr=new InputStreamReader(input);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();
while(str!=null) {
System.out.println(str);
str=br.readLine();
}
br.close();
isr.close();
input.close();
}
else {
System.out.println("文件不存在");
}
}
/**
* 将dst1重命名为dst2,也可以进行文件的移动
* @param path1 旧名
* @param path2 新名
*/
@Test
public void moveFile() {
Path path1=new Path("/user/hadoop/abc.txt");
Path path2=new Path("/user/hadoop/cba.txt");
try {
if(!filesystem.exists(path1)) {
System.out.println(path1+"文件不存在");
return;
}
if(filesystem.exists(path2)) {
System.out.println(path2 + "已存在!");
return;
}
//将文件进行重命名,可以起到移动文件的作用
filesystem.rename(path1, path2);
System.out.println("文件已重命名");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 上传文件到hdfs
* F://hadoop_work/hdfs/test.txt 自己电脑(不是虚拟机)
* /user/hadoop hdfs
*/
@Test
public void putFile() {
try {
// 从本地将文件拷贝到HDFS中,如果目标文件已存在则进行覆盖
filesystem.copyFromLocalFile(new Path("F://hadoop_work/hdfs/test.txt"), new Path("/user/hadoop"));
System.out.println("上传成功!");
// 关闭连接
} catch (IOException e) {
System.out.println("上传失败!");
e.printStackTrace();
}
}
/**
* 下载文件到本地
* F://hadoop_work/hdfs/test1.txt 自己电脑(不是虚拟机)
* /user/hadoop/test.txt hdfs
*/
@Test
public void getFile() {
try {
if (!filesystem.exists(new Path("/user/hadoop/test.txt"))) {
System.out.println("文件不存在!");
} else {
filesystem.copyToLocalFile(new Path("/user/hadoop/test.txt"), new Path("F://hadoop_work/hdfs/test1.txt"));
System.out.println("下载成功!");
}
} catch (IOException e) {
System.out.println("下载失败!");
e.printStackTrace();
}
}
/**
* 显示目录下所有文件
*/
@Test
public void listStatus() {
try {
if (!filesystem.exists(new Path("/user/hadoop"))) {
System.out.println("目录不存在!");
return;
}
// 得到文件的状态
FileStatus[] status = filesystem.listStatus(new Path("/user/hadoop"));
for (FileStatus s : status) {
// 输出详情
// 文件名称
System.out.println(s.getPath().getName());
// 长度
System.out.println(s.getLen());
// 权限
System.out.println(s.getPermission());
// 分组
System.out.println(s.getGroup());
}
} catch (IllegalArgumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除hdfs中的文件
*/
@Test
public void deleteFile() {
try {
if (!filesystem.exists(new Path("/usr/hadoop/cba.txt"))) {
System.out.println("文件不存在!");
} else {
filesystem.delete(new Path("/usr/hadoop/cba.txt"), true);
System.out.println("删除成功!");
}
} catch (IOException e) {
System.out.println("删除失败!");
e.printStackTrace();
}
}
/**
* 关闭filesyatem
*/
@After
public void destory()
{
try {
filesystem.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最后
以上就是拉长眼睛为你收集整理的Hadoop FileSystem API 管理文件的全部内容,希望文章能够帮你解决Hadoop FileSystem API 管理文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复