上传tiff文件至hdfs

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.zxl</groupId><artifactId>swing-demo</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><dependencies><!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.5</version></dependency></dependencies>
</project>

主类代码

package com.zxl.hdfs;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URI;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;/*** //TODO  上传tiff文件至hdfs** @Description:* @Author: zhangxueliang* @Create: 2021/5/17 14:56* @Version: 1.0**/
public class Demo {private final static String HDFS_SERVER = "hdfs://192.168.101.119:9000";public static void main(String[] args) {// 创建 JFrame 实例JFrame frame = new JFrame("上传tiff文件至hdfs");// Setting the width and height of frameframe.setSize(512, 512);frame.setLocation(400, 200);frame.setResizable(false);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//创建面板,这个类似于 HTML 的 div 标签//我们可以创建多个面板并在 JFrame 中指定位置//面板中我们可以添加文本字段,按钮及其他组件。JPanel panel = new JPanel();// 添加面板frame.add(panel);//调用用户定义的方法并添加组件到面板placeComponents(panel);// 设置界面可见frame.setVisible(true);}private static void placeComponents(JPanel panel) {// 这边设置布局为 nullpanel.setLayout(null);// 创建select按钮JButton selectButton = new JButton("选择本地TIFF文件");selectButton.setBounds(10, 80, 180, 25);panel.add(selectButton);selectButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {JFileChooser jf = new JFileChooser();jf.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);jf.setDialogTitle("请选择要上传的文件夹...");jf.showDialog(null, null);String srcPath = jf.getSelectedFile().getAbsolutePath() + "/*";String[] name = jf.getSelectedFile().getAbsolutePath().split("/");String destPath = HDFS_SERVER + "/zxl/test/";//String destPath = HDFS_SERVER + "/zxl/test/" + name[name.length - 1] + "/";if (srcPath.isEmpty()) {System.out.println("请选择本地路径!");} else {try {copyFromLocalFile(srcPath, destPath);} catch (Exception e1) {e1.printStackTrace();}}System.out.println("Sucess!");}});}protected static void copyFromLocalFile(String srcPath, String destPath) throws Exception {System.setProperty("HADOOP_USER_NAME","root");FileSystem fs = null;FileSystem local = null;//读取配置文件Configuration conf = new Configuration();//指定HDFS地址URI uri = new URI(HDFS_SERVER);fs = FileSystem.get(uri, conf);// 获取本地文件系统local = FileSystem.getLocal(conf);//获取文件目录FileStatus[] listFile = local.globStatus(new Path(srcPath), new RegxAcceptPathFilter("^.*tif$"));//获取文件路径Path[] listPath = FileUtil.stat2Paths(listFile);//输出文件路径Path outPath = new Path(destPath);boolean result = fs.isDirectory(outPath);if (result == true) {//循环遍历所有文件路径for (Path p : listPath) {fs.copyFromLocalFile(p, outPath);}} else {fs.mkdirs(outPath);System.out.println("创建路径: " + outPath);for (Path p : listPath) {fs.copyFromLocalFile(p, outPath);}}}
}

过滤器代码

RegxAcceptPathFilter是用来将本地文件夹下非.tif文件进行过滤掉

package com.zxl.hdfs;import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
/**
* //TODO RegxAcceptPathFilter是用来将本地文件夹下非.tif文件进行过滤掉
* @Description:
* @Author: zhangxueliang
* @Create: 2021/5/17 15:55
* @Version: 1.0
**/
public class RegxAcceptPathFilter implements PathFilter{private  final String regex;public RegxAcceptPathFilter(String regex) {this.regex=regex;}@Overridepublic boolean accept(Path path) {boolean flag=path.toString().matches(regex);return flag;}
}

运行结果

上传结果

Java GUI编程:swing实现上传tiff文件至hdfs功能相关推荐

  1. java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  2. python的socket编程接收浏览器上传的文件_使用python套接字编程将文件发送到浏览器...

    我正在尝试使用python(仅限于套接字编程)向客户机(浏览器:Chrome)发送一个文件(mp3).我的问题是文件被下载了,而不是在浏览器上进行流式传输.我不明白我哪里错了.请告诉我.在 另外,下载 ...

  3. java上传音频到服务器_Java 客户端向服务端上传mp3文件数据的实例代码

    客户端: package cn.itcast.uploadpicture.demo; import java.io.BufferedInputStream; import java.io.FileIn ...

  4. The package javax.swing is not accessible(java GUI 编程时引用swing包和awt包时会报错怎么办)

    Java GUI 编程时引用swing包和awt包时会报错怎么办 一.环境与错误现象 使用的编译器为eclipse,情况为: 二.解决方法 问题主要是由工程中的module-info.java这个文件 ...

  5. JAVA上传tiff格式文件

    文章目录 Java上传tiff格式文件 Java上传tiff格式文件 加入pom依赖 <dependency><groupId>com.twelvemonkeys.imagei ...

  6. JAVA图形编程Swing之——JPanel绘图

    JAVA图形编程Swing之--JPanel绘图     一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...

  7. Java GUI编程学习

    Java GUI编程学习 GUI编程 告诉大家怎么学? 这是什么? 他怎么玩? 该如何平时运用它? 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1.简介 G ...

  8. Java GUI编程的几种常用布局管理器

    Java GUI编程的几种常用布局管理器 本人是一个大二的学生.因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局.然后以次博文为笔记,总结.完善以及发表最近学习的一 ...

  9. java 百度网盘上传_使用pcs api往免费的百度网盘上传下载文件的方法

    百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog ...

最新文章

  1. 加来道雄 基因编辑 纳米机器人_浙大专家把螺旋藻制成微纳机器人,可通过光合作用靶向治疗肿瘤...
  2. POJ 2356 Find a multiple (抽屉原理)
  3. cii框架PHP,CII. POSIX Functions - PHP 5 中文文档
  4. linux db2表死锁,记录一次问题解决:DB2死锁解决办法(SQLCODE=-911, SQLSTATE=40001)
  5. C++类和对象的封装
  6. 00084_Map接口
  7. 分布式离线计算—Spark—SparkStreaming
  8. 使用nextInt()等接受输入时必须注意换行符的输入
  9. SELinux入门简介
  10. freemarker ftl模板_效率提升百分之四十,AS模板也太好用了吧
  11. 微信iOS多设备多字体适配方案总结
  12. Java Collections singletonMap()方法与示例
  13. 第一次作业+105032014142
  14. python删除指定元素 多个_Python List remove()删除多个元素
  15. SpringBoot 配置系列:(二)多环境配置
  16. 中文邮件格式模板、工作汇报邮件模板这样写,90%人都爱看
  17. clip-path 兼容多种浏览器
  18. java中switch语句用法详解
  19. python 单词拆音节_y在单词或音节中间的单词有哪些?
  20. cadence SPB17.4 - allegro - 出装配图

热门文章

  1. c++17(28)-Makefile(1)
  2. 【深度学习】一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)...
  3. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
  4. 【数据竞赛】Kaggle知识点:入门到进阶的10个问题
  5. 必备技能,conda创建python虚拟环境,完美管理项目
  6. 【版本更新】网易云信IM微信小程序上线啦!
  7. 数据结构_队列_mindmap
  8. linux基础篇-系统中进程相关概念
  9. [译] D3.js 嵌套选择集 (Nested Selection)
  10. CommonJS,AMD,CMD,ES6,require 和 import 详解