hdfs api创建文件并写入内容

如题所述

Hadoop中关于文件操作类基本上全部是在"org.apache.hadoop.fs"包中,这些API能够支持的操作包含:打开文件,读写文件,删除文件等。

Hadoop类库中最终面向用户提供的接口类是FileSystem,该类是个抽象类,只能通过来类的get方法得到具体类。get方法存在几个重载版本,常用的是这个:

hdfs api创建文件写入内容全部程序如下:

(1):import java.io.IOException;  

import java.net.URI;  

import java.net.URISyntaxException;  


import org.apache.hadoop.conf.Configuration;  

import org.apache.hadoop.fs.FSDataInputStream;  

import org.apache.hadoop.fs.FSDataOutputStream;  

import org.apache.hadoop.fs.FileStatus;  

import org.apache.hadoop.fs.FileSystem;  

import org.apache.hadoop.fs.FileUtil;  

import org.apache.hadoop.fs.Path;  

import org.apache.hadoop.io.IOUtils;  



public class HDFSTest {  


//在指定位置新建一个文件,并写入字符  

public static void WriteToHDFS(String file, String words) throws IOException, URISyntaxException  

{  

Configuration conf = new Configuration();  

FileSystem fs = FileSystem.get(URI.create(file), conf);  

Path path = new Path(file);  

FSDataOutputStream out = fs.create(path);   //创建文件  


//两个方法都用于文件写入,好像一般多使用后者  

out.writeBytes(words);    

out.write(words.getBytes("UTF-8"));  


out.close();  

//如果是要从输入流中写入,或是从一个文件写到另一个文件(此时用输入流打开已有内容的文件)  

//可以使用如下IOUtils.copyBytes方法。  

//FSDataInputStream in = fs.open(new Path(args[0]));  

//IOUtils.copyBytes(in, out, 4096, true)        //4096为一次复制块大小,true表示复制完成后关闭流  

}  

(2): public static void DeleteHDFSFile(String file) throws IOException  

{  

Configuration conf = new Configuration();  

FileSystem fs = FileSystem.get(URI.create(file), conf);  

Path path = new Path(file);  

//查看fs的delete API可以看到三个方法。deleteonExit实在退出JVM时删除,下面的方法是在指定为目录是递归删除  

fs.delete(path,true);  

fs.close();  

}  


public static void UploadLocalFileHDFS(String src, String dst) throws IOException  

{  

Configuration conf = new Configuration();  

FileSystem fs = FileSystem.get(URI.create(dst), conf);  

Path pathDst = new Path(dst);  

Path pathSrc = new Path(src);  


fs.copyFromLocalFile(pathSrc, pathDst);  

fs.close();  

}  


public static void ListDirAll(String DirFile) throws IOException  

{  

Configuration conf = new Configuration();  

FileSystem fs = FileSystem.get(URI.create(DirFile), conf);  

Path path = new Path(DirFile);  


FileStatus[] status = fs.listStatus(path);  

//方法1    

for(FileStatus f: status)  

{  

System.out.println(f.getPath().toString());    

}  

//方法2    

Path[] listedPaths = FileUtil.stat2Paths(status);    

for (Path p : listedPaths){   

System.out.println(p.toString());  

}  

}  

(3):


温馨提示:答案为网友推荐,仅供参考
相似回答