Eclipse进行Hadoop的文件上传下载重命名以及文件是否存在

在开发之前一定要确定你的虚拟机可以连接到HDFS,你的Eclipse一定要连接到集群,这样才会实现操作
这里我得代码是在测试类中书写的
package com.zhaoxing.test;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import java.io.InputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TestHdfs {
//引入配置文件
Configuration conf = null;
//创建文件流—引用的是hadoop内部封装的方法
FileSystem fs = null;
@Before
public void conn() throws Exception {
conf=new Configuration(true);//设置是否读取配置信息
fs = FileSystem.get(conf);
}
@After
public void close() throws Exception {
fs.close();
}
//创建、删除、重命名、文件是否存在
//创建文件
@Test
public void mkdir() throws Exception {
Path f = new Path("/aaa");
//判断是否存在
if(fs.exists(f)) {
//删除
fs.delete(f);
System.out.println(“false”);
}
//创建
fs.mkdirs(f);
System.out.println(“true”);
}
//文件是否存在
public void exist() throws Exception {
Path p = new Path("");
//判断是否存在
if(fs.exists§) {
//如果存在就删除文件夹
System.out.println(“文件已存在”);
fs.delete§;
}
System.out.println(“文件不存在”);
}

//重命名
@Test
public void rename() throws Exception {
	Path p1 = new Path("/user/root/group");
	Path p2 = new Path("/user/root/ggggg");
	boolean rename = fs.rename(p1, p2);
	System.out.println(rename);
}

//上传文件
@Test
public void uploadFile() throws Exception {
	//输出位置
	Path inputFile = new Path("/user/root/abc.txt");
	//相当于文件内容的输出
	FSDataOutputStream output = fs.create(inputFile);
	//输入位置 相当于文件内容的输入
	InputStream input = new BufferedInputStream(new FileInputStream(new File("E:\\abc.txt")));
	
	IOUtils.copyBytes(input, output, conf,true);
}
//下载文件
@Test
public void downloadFile() throws Exception{
	//上传文件到HDFS
	Path outputFile = new Path("/user/root/abc.txt");
	//输入源:将集群中的文件作为输入
	FSDataInputStream input = fs.open(outputFile);
	FileOutputStream output = new FileOutputStream("E:\\aaa.txt");
	IOUtils.copyBytes(input, output, conf,true);
}

}
以上就是上传下载、重命名、判断文件是否存在

我来总结一下开发中的问题:
一、一定要确定好上传文件和下载文件的关系
我们要开发上传文件的代码时,首先要确定好哪个是输出位置哪个是输入位置
,整个代码中是站在client角度来看待输入输出问题的,对于client我们需要把文件从client自身传到Datanode中备份那么这个就是输出位置,而我们选择传送的本地文件是传输到了client的手上,所以本地的文件地址就是输入地址,
而下载文件反而相反我们需要从HDFS中下载文件到本地地址上,所以整个的地址是相反的。
二、一定要在Hosts文件中写上集群的ip和名字,否则网络是不会链接上的

你可能感兴趣的:(Eclipse进行Hadoop的文件上传下载重命名以及文件是否存在)