package com.io.copyfile;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import org.apache.log4j.Logger;
/**
* 弹出对话框选择任意文件进行复制 复制新文件在项目跟目录
*
* @author <a href="mailto:qiyang199132@163.com">qiyang</a>
* @version $Revision$
* @create 2011-5-9 下午02:47:21
*/
public class CopyFile {
private final static Logger log = Logger.getLogger(CopyFile.class);
public static void main(String[] args) {
CopyFile cf = new CopyFile();
File file = cf.getFile();
if (file == null) {
JOptionPane.showMessageDialog(null, "错误操作", "提示", 1);
} else {
cf.coypFile(file);
}
}
/**
* 弹出对话框选择文件
*
* @return 返回选择的文件
*/
public File getFile() {
JFileChooser jf = new JFileChooser();
jf.setDialogTitle("选择文件");
jf.showOpenDialog(null);
jf.setVisible(true);
File selectedFile = null;
selectedFile = jf.getSelectedFile();
if (selectedFile != null) {
File[] list = new File(System.getProperty("user.dir")).listFiles();
for (int i = 0; i < list.length; i++) {
if (selectedFile.getName().equals(list[i].getName())) {
JOptionPane.showMessageDialog(null, "改文件已存在", "提示", 1);
return null;
}
}
} else {
System.out.println("No! You did not select the right file.");
}
return selectedFile;
}
/**
* 对传进来的文件进行复制并放入项目跟目录
*
* @param file 传进来的文件
*/
public void coypFile(File file) {
String path = System.getProperty("user.dir");
try {
/**
* 文件字节长度
*/
int length = (int) file.length();
/**
* 输入流 读取文件
*/
FileInputStream is = new FileInputStream(file);
/**
* 输出流写文件
*/
FileOutputStream os = new FileOutputStream(path + "/" + file.getName());
/**
* 缓存
*/
byte[] bt = new byte[256];
/**
* 定义字节接受每次读取的长度
*/
int b = 0;
/**
* 定义一次读取的长度 然后++得到已经复制多少
*/
int size = 0;
/**
* 定义frame
*/
Frame frame=new Frame("进度条");
/**
* 定义一个对话框并设置样式
*/
final JDialog dlg = new JDialog(frame, "Progress Dialog", true);
/**
* 定义一个进度条 size 和 length 为 参数
*/
JProgressBar dpb = new JProgressBar(size,length);
/**
* 设置对话框样式
*/
dlg.add(BorderLayout.CENTER, dpb);
dlg.add(BorderLayout.NORTH, new JLabel("正在复制..."));
dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dlg.setSize(300, 75);
/**
* 设置相对值 给frame
*/
dlg.setLocationRelativeTo(frame);
/**
* 定义线程
* 对进度条进行监控
*/
Thread t=new Thread(new Runnable() {
@Override
public void run() {
dlg.setVisible(true);
}
});
/**
* 开启线程
*/
t.start();
/**
* 循环
* 读取文件 让以读取的++
* 写文件 设置 进度条的进度++
*/
while ((b = is.read(bt)) != -1) {
size += b;
os.write(bt);
dpb.setValue(size);
}
/**
* 线程休眠1秒
*/
t.sleep(1000);
/**
* 关闭流
*/
os.close();
is.close();
/**
* 复制完了退出程序
*/
if (dpb.getValue() == length) {
dlg.setVisible(false);
System.exit(0);
}
} catch (FileNotFoundException e) {
log.error("文件找不到");
} catch (IOException e) {
log.error("IO异常");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
简介:自己开发的工具,用于对批量的移动设备(U盘等)进行文件复制。 使用的场景:用于批量制造资源U盘时使用,然后复制同一个文件夹下的所有文件到所有U盘中。采用多线程同时复制的方式。 使用说明: 1、选择需要...
4. **文件复制**: 在Delphi中,复制文件可以使用TFile.Copy方法,它允许复制一个文件到新的位置,同时可以选择是否覆盖已存在的文件。复制过程包括打开源文件,创建目标文件,然后将源文件的内容写入目标文件。 5...
本文将详细介绍如何安装XShell 4并使用附带的注册文件进行激活。 首先,我们打开压缩包,可以看到两个文件:xshell_4.0.0131.1397032097.exe是XShell 4的安装程序,而xshell4sn.txt则是包含注册码的文本文件。这两...
3. 安装过程:安装程序会自动处理剩余步骤,包括复制文件到指定目录,注册相关组件等。等待进度条完成即可。 4. 启动VSCode:安装完成后,可以通过桌面快捷方式或者开始菜单启动VSCode。首次打开时,可能会有欢迎...
这通常涉及网络请求,如使用HttpClient发送POST请求,附带文件流或文件路径。 4. **反馈与进度**:提供上传进度和状态反馈,如显示上传进度条,通知用户上传成功或失败的信息。 5. **错误处理**:确保有良好的错误...
4. 完成安装:耐心等待安装进度条走完,然后重启电脑使安装生效。 接下来是注册环节,这一步通常需要注册机的帮助: 1. 使用注册机:注册机是一个能够生成有效序列号的小型应用程序。启动注册机,选择Adobe After ...
PS:干净卸载过程请参考附带的doc文件,有图解。 ***************************************************************************************************************** 【机子固件是越狱的请看】 ######...
4. **安装更新**:这一步可能涉及到文件操作,如File和Directory类,用于复制、删除和移动文件。如果是.NET Core应用程序,还可以利用NuGet包管理器来安装更新。 5. **重启或覆盖运行**:可能需要使用Process类来...
12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3...
- **复制示例文件**: 将评估板附带的安装光盘中的`StellarisWare for C1`文件夹复制到C盘根目录下(或自定义位置)。 - **文件路径**: 假设默认路径为`C:\StellarisWareforC1`。 **3. 修改示例工程配置文件** - **...
12.2.2 将文件复制到剪切板 287 12.2.3 格式转换 288 12.2.4 图片幻灯片 288 12.2.5 图片旋转 289 12.3 设计过程 290 12.3.1 主窗体 290 12.3.2 打开图片目录 291 12.3.3 图片格式转换 292 12.3.4 ...
物理备份包括完整数据库备份、增量备份和差异备份,通过复制数据库的数据文件、控制文件和日志文件来实现。逻辑备份则是通过SQL命令(如`EXPDP`和`IMPDP`)导出和导入数据。此工具可能支持这些备份方式,方便用户...
如果你想使用EIKO风格的关联格式文件图标,将icons文件夹复制到你的foobar2000目录下即可,覆盖原有的icons文件夹。 -----配置包的应用---------- 本配置包有两种应用方案,请按需求选择。 不管选哪种,请先安装一份...
根据你的项目需求,你可以修改HTML、CSS和JavaScript文件,或者复制粘贴所需的组件到你的代码中。记得遵循模板的文件结构和命名规则,以保持代码组织有序。 总之,Metronic是一个强大的前端工具,适用于构建企业级...
2. 图像文件格式支持:程序需要能够读取常见的图像文件格式,如JPEG、PNG、BMP等。这需要使用`System.Drawing`命名空间中的类,如`Image`或`Bitmap`,或者使用WPF的`Imaging`命名空间。 图像翻转功能涉及图像处理...
找到安装文件,通常位于随设备附带的光盘中,如下图所示,双击该文件即可启动安装程序。 ![图1.1](#fig11) **图1.1 安装程序** **1.3 进行安装向导** 双击安装程序后,首先出现的是安装向导初始界面(图1.2)。在...
5.2.2 复制表结构 99 5.2.3 使用Field对象 102 5.2.4 复制查询 102 5.2.5 复制关系 104 5.2.6 复制数据 106 5.3 使用事务加快处理速度 108 5.4 使用定制的属性 109 5.5 小 结 111 第6章 ActiveX...
14.4.1 使用SysCmd()显示Access进度条 448 14.4.2 使用ActiveX ProgressBar控件 450 14.5 使用Slider控件在运行阶段设置文本框尺寸 452 14.6 应用Microsoft Rich TextBox控件提供所见即所得的功能 455 14.6.1 ...
LCDWIKI_GUI.zip是一个与Arduino相关的压缩包文件,它很可能包含了用于操作或配置LCD显示屏的图形用户界面(GUI)程序。Arduino是一个开源电子原型平台,适用于艺术家、设计师和爱好者,便于他们创建交互式物体或...