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...
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`命名空间。 图像翻转功能涉及图像处理...
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是一个开源电子原型平台,适用于艺术家、设计师和爱好者,便于他们创建交互式物体或...