HDFS文件上传和下载API

package hdfsAPI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;/*** 李庆* 2019-8-25* HDFS的上传与下载*/
public class Hdfs1API {//实例化hadoop配置文件Configuration conf = new Configuration();//获取文件系统//Shift+F2 快速找到错误提FileSystem fs = FileSystem.get(new URI("hdfs://bigdata111:9000"), conf, "root");public Hdfs1API() throws InterruptedException, IOException, URISyntaxException {}@Testpublic void initHdfs() throws IOException {//Ctrl+Alt+v 后推//Ctrl+Alt+O 去除无用的包//Ctrl+Alt+空格 提示//打印文件系统System.out.println(fs.toString());//关闭fs.close();}@Test/*** 从本地文件上传到*/public void putFileHdfs() throws URISyntaxException, IOException, InterruptedException {//定义文件的输入路径Path src = new Path("D:\\input\\test\\aa.txt");//定义文件的输出路径Path out = new Path("hdfs://bigdata111:9000/teacher.txt");//上传fs.copyFromLocalFile(src, out);//关闭fs.close();System.out.println("teacher.txt上传成功");}@Test/*** 从HDFS文件下载到本地*/public void getFileHdfs() throws IOException {//定义文件Hdfs下载的路径Path output = new Path("/teacher.txt");//定义下载到win中文件路径Path input = new Path("D:\\input\\test\\student.txt");//下载fs.copyToLocalFile(false, output, input, true);//关闭fs.close();System.out.println("plus下载成功");}@Test/*** 创建目录*///上传目录public void mkdirHdfs() throws IOException {//上传目录Path path = new Path("/0825");//创建目录fs.mkdirs(path);//关闭fs.close();System.out.println("创建目录0825成功");}@Test/*** 删除目录*/public void deldirHdfs() throws IOException {//找出删除目录Path path = new Path("/0825");//删除目录fs.delete(path);//关闭fs.close();System.out.println("删除目录0825成功");}@Test/*** 重命名*/public void renameHdfs() throws IOException {//重命名文件fs.rename(new Path("/0825"), new Path("/0826"));//关闭fs.close();System.out.println("重命名成功");}@Test/***查看文件详情*/public void readFileHdfs() throws IOException {//获取到目录里面的所有的文件迭代器//文件目录可以形成迭代器,里面有许多文件RemoteIterator<LocatedFileStatus> listfiles = fs.listFiles(new Path("/"), true);while (listfiles.hasNext()) {//拿到每个文件的对象,listFiles.nextLocatedFileStatus file = listfiles.next();//System.out.println("文件名字" + file.getPath().getName());System.out.println("文件的块大小" + file.getBlockSize());System.out.println("文件的长度" + file.getLen());System.out.println("=================分隔符");BlockLocation[] blockLocations = file.getBlockLocations();for (BlockLocation block : blockLocations) {//getOffset()偏移量System.out.println("块的偏移量" + block.getOffset());//每个块放在哪个机器上String[] hosts = block.getHosts();for (String host : hosts) {System.out.println(host);}}}}@Test/*** 判断是否是文件*/public void isFile() throws IOException {//获取目录所有的路径的对象FileStatus[] fileStatuses = fs.listStatus(new Path("/"));for (FileStatus status : fileStatuses) {if (status.isFile()) {System.out.println(status.getPath().getName() + "是文件");} else {System.out.println(status.getPath().getName() + "是文件夹");}}fs.close();}@Test/*** HDFS文件下载到Win中*/public void putFileHdfsIO() throws IOException {//创建输入流FSDataInputStream fis = fs.open(new Path("/teacher.txt"));//创建输出流FileOutputStream fos = new FileOutputStream(new File("D:\\input\\test\\teacher1.txt"));//对接流IOUtils.copyBytes(fis, fos, 5 * 1024, true);fs.close();System.out.println("下载成功");}@Test/*** win文件上传到HDFS中*/public void inFileHDFS() throws IOException {//创建输入流FileInputStream fis = new FileInputStream("D:\\input\\test\\bbbbbbb.txt");//创建输出流Path writePath = new Path("hdfs://bigdata111:9000/plus/bbbbbbb.txt");FSDataOutputStream fos = fs.create(writePath);//对接流try {IOUtils.copyBytes(fis, fos, 5 * 1024, true);} catch (IOException e) {e.printStackTrace();} finally {fs.close();System.out.println("上传成功");}}@Test/*** 定位读取,文件第一个快* 定位读取,也是下载*/public void readFileblock1() throws IOException {//创建输入流FSDataInputStream fis = fs.open(new Path("/hadoop-2.8.4.tar.gz"));//创建输出流FileOutputStream fos = new FileOutputStream(new File("D:\\input\\test\\1"));//对接流//设buff第一个块1kbbyte[] buff = new byte[1024];for (int i = 0; i < 128 * 1024; i++) {fis.read(buff);fos.write(buff);}IOUtils.closeStream(fis);IOUtils.closeStream(fos);fs.close();}@Test/*** 定位读取,文件第二个快* 定位读取,也是下载*/public void readFileblock2() throws IOException {//创建输入流FSDataInputStream fis = fs.open(new Path("/hadoop-2.8.4.tar.gz"));//创建输出流FileOutputStream fos = new FileOutputStream(new File("D:\\input\\test\\2"));//定位偏移量fis.seek(128 * 1024*1024);//对接流,用copyBytes//buffSize:1024是缓存区//close:true是关流IOUtils.copyBytes(fis,fos,1024,true);fis.close();}
}

从HDFS中下载到win中的文件可以合并到一起(俩个block的可以)

在win中用追加的方式:type 2 >> 1,然后就可以合并一起了。

6.HDFS文件上传和下载API相关推荐

  1. HDFS文件上传、下载和删除案例

    (前提已经配置好HADOOP_HOME的环境变量,用的是hadoop2.7.2) 1.创建Maven工程HdfsClient 2.导入相应的依赖坐标+日志添加 在上面箭头指的文件夹里添加下面的代码 & ...

  2. HDFS中JAVA API的使用(hadoop的文件上传和下载)

    HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...

  3. [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...

    写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的 ...

  4. 一篇文章教你学会使用SpringBoot实现文件上传和下载

    文章目录 一.搭建SpringBoot开发环境 1.创建项目 2.配置application.properties参数 3.实体响应类和异常信息类 4.创建FileController 二.接口测试 ...

  5. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

  6. 小汤学编程之JavaEE学习day05——会话管理、文件上传与下载、Ajax

    一.会话管理 1.HTTP协议     2.会话的概念     3.会话跟踪技术     4.会话跟踪技术分类(四种) 二.文件上传与下载 1.上传     2.下载     3.上传和下载合并优化成 ...

  7. Springboot中常用的文件上传和下载通用接口

    记录下通用的文件上传和下载接口,一般的开发中都是会使用到的,不过写的最简单的版本. 文章目录 程序测试 本文小结 程序测试 在yml中配置一个文件保存的路径 #保存文件的路径 common:file: ...

  8. JavaWeb:实现文件上传与下载

    JavaWeb:实现文件上传与下载 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不包含文 ...

  9. 十二、文件上传与下载

    一.如何实现文件上传 要实现Web开发中的文件上传功能,通常需完成两步操作:一是在Web页面中添加上传输入项,二是在Servlet中读取上传文件的数据,并保存到本地硬盘中. 由于大多数文件的上传都是通 ...

最新文章

  1. torchvision.transforms 的CenterCrop():在图片的中间区域进行裁剪
  2. always@( )列表里不能同时有电平敏感事件和边沿触发事件
  3. VirtualCopy in WinCE6.0
  4. JSP脚本实现登录验证功能
  5. C/C++代码的混合使用
  6. 关于云主机拷贝复制资源异常的处理办法
  7. pandas 之dataFrame 数据显示不完全的解决方案
  8. 39. 确保判别式是纯函数
  9. 浙江省街道乡镇geo json地图数据全
  10. Mozilla发布开发者专用浏览器Fx10
  11. 新电脑java开发常用环境安装下载教程收集--持续更新
  12. Windows一键修改IP、DNS等网络配置(AutoHotkey实现)
  13. 万里汇WorldFirst个人和公司帐户注册教程(送$25+0.3%提现费)
  14. MyExcel 2.2.0 版本发布,支持公式导出
  15. ip地址为61.179.150.39/28,问其子网号为多少,广播号为多少,可用ip地址范围是多少
  16. Android studio安装教程(2020/11/20最新版本的安装)
  17. android多线程处理的方法以及应用场景
  18. android关机闹钟慢一分钟问题
  19. SQL2000有文件挂起问题
  20. 【逐函数讲解ORB_SLAM2源码】4.计算umax

热门文章

  1. 快速收集资料的一种方法
  2. 03-GeoServer WMS服务参数讲解
  3. 基于pgrouting求任意两点的最短路径的函数pgr_fromAtoB
  4. geoserver加载mysql_postgressql+geoserver实现路径分析
  5. Ubuntu下安装搜狗输入法、截屏软件、谷歌浏览器
  6. Web安全 信息收集 (收集 Web服务器 的重要信息.)
  7. 流媒体相关技术了解入门
  8. 【C语言典例】——day3:设计魔方阵(数组)
  9. 聊一聊智能汽车和物联网IoT设备的OTA远程升级
  10. vue 使用pdf.js