这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上、从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到HDFS上、从HDFS上下载文件和删除HDFS上的文件,大家参考使用吧

 

复制代码 代码如下:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;

import java.io.File;import java.io.IOException;public class HadoopFile { private Configuration conf =null;

public HadoopFile(){ conf =new Configuration(); conf.addResource(new Path("/hadoop/etc/hadoop/core-site.xml")); }

public HadoopFile(Configuration conf){ this.conf =conf; }

public boolean sendFile(String path,String localfile){ File file=new File(localfile); if (!file.isFile()) { System.out.println(file.getName()); return false; } try { FileSystem localFS =FileSystem.getLocal(conf); FileSystem hadoopFS =FileSystem.get(conf); Path hadPath=new Path(path);

FSDataOutputStream fsOut=hadoopFS.create(new Path(path+"/"+file.getName())); FSDataInputStream fsIn=localFS.open(new Path(localfile)); byte[] buf =new byte[1024]; int readbytes=0; while ((readbytes=fsIn.read(buf))>0){ fsOut.write(buf,0,readbytes); } fsIn.close(); fsOut.close();

FileStatus[] hadfiles= hadoopFS.listStatus(hadPath); for(FileStatus fs :hadfiles){ System.out.println(fs.toString()); } return true; } catch (IOException e) { e.printStackTrace(); } return false; }

public boolean delFile(String hadfile){ try {

FileSystem hadoopFS =FileSystem.get(conf); Path hadPath=new Path(hadfile); Path p=hadPath.getParent(); boolean rtnval= hadoopFS.delete(hadPath, true);

FileStatus[] hadfiles= hadoopFS.listStatus(p); for(FileStatus fs :hadfiles){ System.out.println(fs.toString()); } return rtnval; } catch (IOException e) { e.printStackTrace(); } return false; }

public boolean downloadFile(String hadfile,String localPath){

try { FileSystem localFS =FileSystem.getLocal(conf); FileSystem hadoopFS =FileSystem.get(conf); Path hadPath=new Path(hadfile);

FSDataOutputStream fsOut=localFS.create(new Path(localPath+"/"+hadPath.getName())); FSDataInputStream fsIn=hadoopFS.open(hadPath); byte[] buf =new byte[1024]; int readbytes=0; while ((readbytes=fsIn.read(buf))>0){ fsOut.write(buf,0,readbytes); } fsIn.close(); fsOut.close();

return true; } catch (IOException e) { e.printStackTrace(); } return false; }}

详细出处参考:http://www.jb51.net/article/48104.htm

查看原文