Java GUI编程:swing实现上传tiff文件至hdfs功能
上传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功能相关推荐
- java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解
下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...
- python的socket编程接收浏览器上传的文件_使用python套接字编程将文件发送到浏览器...
我正在尝试使用python(仅限于套接字编程)向客户机(浏览器:Chrome)发送一个文件(mp3).我的问题是文件被下载了,而不是在浏览器上进行流式传输.我不明白我哪里错了.请告诉我.在 另外,下载 ...
- java上传音频到服务器_Java 客户端向服务端上传mp3文件数据的实例代码
客户端: package cn.itcast.uploadpicture.demo; import java.io.BufferedInputStream; import java.io.FileIn ...
- The package javax.swing is not accessible(java GUI 编程时引用swing包和awt包时会报错怎么办)
Java GUI 编程时引用swing包和awt包时会报错怎么办 一.环境与错误现象 使用的编译器为eclipse,情况为: 二.解决方法 问题主要是由工程中的module-info.java这个文件 ...
- JAVA上传tiff格式文件
文章目录 Java上传tiff格式文件 Java上传tiff格式文件 加入pom依赖 <dependency><groupId>com.twelvemonkeys.imagei ...
- JAVA图形编程Swing之——JPanel绘图
JAVA图形编程Swing之--JPanel绘图 一直搞不清怎么在JPanel中绘2D图像,主要是不知怎样得到Graphics类的对像来画图,今天查了查资料,测试N种方法,终于搞明白.下面做一 ...
- Java GUI编程学习
Java GUI编程学习 GUI编程 告诉大家怎么学? 这是什么? 他怎么玩? 该如何平时运用它? 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1.简介 G ...
- Java GUI编程的几种常用布局管理器
Java GUI编程的几种常用布局管理器 本人是一个大二的学生.因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局.然后以次博文为笔记,总结.完善以及发表最近学习的一 ...
- java 百度网盘上传_使用pcs api往免费的百度网盘上传下载文件的方法
百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的. 环境准备: 开通读写网盘的权限及获取access_token:http://blog ...
最新文章
- 加来道雄 基因编辑 纳米机器人_浙大专家把螺旋藻制成微纳机器人,可通过光合作用靶向治疗肿瘤...
- POJ 2356 Find a multiple (抽屉原理)
- cii框架PHP,CII. POSIX Functions - PHP 5 中文文档
- linux db2表死锁,记录一次问题解决:DB2死锁解决办法(SQLCODE=-911, SQLSTATE=40001)
- C++类和对象的封装
- 00084_Map接口
- 分布式离线计算—Spark—SparkStreaming
- 使用nextInt()等接受输入时必须注意换行符的输入
- SELinux入门简介
- freemarker ftl模板_效率提升百分之四十,AS模板也太好用了吧
- 微信iOS多设备多字体适配方案总结
- Java Collections singletonMap()方法与示例
- 第一次作业+105032014142
- python删除指定元素 多个_Python List remove()删除多个元素
- SpringBoot 配置系列:(二)多环境配置
- 中文邮件格式模板、工作汇报邮件模板这样写,90%人都爱看
- clip-path 兼容多种浏览器
- java中switch语句用法详解
- python 单词拆音节_y在单词或音节中间的单词有哪些?
- cadence SPB17.4 - allegro - 出装配图
热门文章
- c++17(28)-Makefile(1)
- 【深度学习】一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)...
- 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
- 【数据竞赛】Kaggle知识点:入门到进阶的10个问题
- 必备技能,conda创建python虚拟环境,完美管理项目
- 【版本更新】网易云信IM微信小程序上线啦!
- 数据结构_队列_mindmap
- linux基础篇-系统中进程相关概念
- [译] D3.js 嵌套选择集 (Nested Selection)
- CommonJS,AMD,CMD,ES6,require 和 import 详解