HDFS的java api操作 (2)

解决方法2:使用download2()的方法下载。

// 下载文件 @Test public void download() throws Exception { fs.copyToLocalFile(new Path("/test2.txt"), new Path("c:/t22.txt")); fs.close(); } // 下载文件兼容版 // 以流的方式下载 @Test public void download2() throws Exception { FSDataInputStream in = fs.open(new Path("/test2.txt")); OutputStream out = new FileOutputStream("c:/t23.txt"); // org.apache.commons.io.IOUtils(common中的和hadoop中的IOUtils都可以,有点小差别) IOUtils.copy(in, out); } // 可自定从哪里开始读以及读几个字节,以流的方式 @Test public void diy() throws IllegalArgumentException, IOException{ FSDataInputStream in = fs.open(new Path("/test2.txt")); // 指定从哪个字节开始读 in.seek(5); FileOutputStream out = new FileOutputStream("c:/t22.txt"); IOUtils.copy(in, out); // IOUtils.copyLarge(input, output, inputOffset, length) } // 指定打印到屏幕,以流的方式 @Test public void diy2() throws IllegalArgumentException, IOException{ FSDataInputStream in = fs.open(new Path("/test2.txt")); // 指定从哪个字节开始读 in.seek(5); IOUtils.copy(in, System.out); } 打印配置文件信息 // 打印配置文件 @Test public void printtConf(){ Iterator<Entry<String, String>> it = conf.iterator(); while(it.hasNext()){ Entry<String, String> ent = it.next(); System.out.println(ent.getKey()+":"+ent.getValue()); } } 创建目录 //创建目录 @Test public void mkdir() throws IllegalArgumentException, IOException{ // 可递归创建目录,返回值表示是否创建成果 boolean b = fs.mkdirs(new Path("/mkdir")); System.out.println(b); } 删除目录或文件 // 删除目录或文件 @Test public void delete() throws IllegalArgumentException, IOException{ // true表示递归删除,返回值表示是否删除成功 boolean b = fs.delete(new Path("/test"), true); System.out.println(b); } 打印指定路径下的文件信息(不含目录,可递归) // 打印指定路径下的文件信息 @Test public void listFile() throws FileNotFoundException, IllegalArgumentException, IOException{ // true表示是否递归 返回的是迭代器对象 RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("http://www.likecs.com/"), true); while(listFiles.hasNext()){ LocatedFileStatus file = listFiles.next(); System.out.println("owner:"+file.getOwner()); System.out.println("filename:"+file.getPath().getName()); System.out.println("blocksize:"+file.getBlockSize()); System.out.println("replication:"+file.getReplication()); System.out.println("permission:"+file.getPermission()); BlockLocation[] blockLocations = file.getBlockLocations(); for (BlockLocation b : blockLocations) { System.out.println("块的起始偏移量:"+b.getOffset()); System.out.println("块的长度:"+b.getLength()); String[] hosts = b.getHosts(); for (String host : hosts) { System.out.println("块所在的服务器:"+host); } } System.out.println("========================================="); } } 打印指定路径下的目录或文件信息(不可递归) // 打印指定路径下的文件或目录 @Test public void list() throws FileNotFoundException, IllegalArgumentException, IOException{ // 返回的是数组,不能递归目录中的内容 FileStatus[] listStatus = fs.listStatus(new Path("http://www.likecs.com/")); for(FileStatus fs: listStatus){ System.out.println((fs.isFile()?"file:":"directory:")+fs.getPath().getName()); } }

作者:py小杰

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsyjd.html