
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):
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)