import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;
public class UpLoadFile {
/**
* @param args */
public static void main(String[] args) { //配置文件
Configuration conf = new Configuration(); try{
//设置配置文件
conf.set(\"fs.default.name\", \"hdfs://192.168.1.45:9000\"); // 获得hdfs文件系统 FileSystem hdfs =
FileSystem.get(URI.create(\"hdfs://192.168.1.45:9000\"), conf); // 本地文件系统
FileSystem localfs = FileSystem.getLocal(conf);
//原路径
String localStr = \"F:/111\"; //目的路径
String dst = \"/home/test2/\";
// 判断输入输出目录存不存在
if (!localfs.exists(new Path(localStr))|| !hdfs.exists(new Path(dst))) {
//异常处理 return; }
// 判断目标路径是否为文件夹
if (!hdfs.getFileStatus(new Path(dst)).isDir()) { //异常处理 return; }
// 判断输入路径是否为文件夹
boolean dir = localfs.getFileStatus(new Path(localStr)).isDir();
if (dir) {//若为文件夹
//FileStatus对象封装了文件系统中文件和目录的元数据,包括文件的长度、块大小、备份数、修改时间、所有者以及权限等信息。 //获取列表
FileStatus[] status = localfs.listStatus(new Path(localStr));
for (FileStatus sta : status) { //获取文件路径
Path path = sta.getPath();
if (sta.isDir()) {//若仍为目录
path = new Path(path.getParent() + \"/\" + path.getName()
+ \"/\"); }
// 上传文件(源文件不删除,覆盖目标文件)
hdfs.copyFromLocalFile(false, true, path, new Path(dst));
} }else{
// 上传文件(源文件不删除,覆盖目标文件)
hdfs.copyFromLocalFile(false, true, new Path(localStr), new Path(dst)); }
System.out.println(\"success\"); }catch(Exception e){ e.printStackTrace(); }
} }
导入jar包如下:
因篇幅问题不能全部显示,请点此查看更多更全内容