实现文件拷贝并获取拷贝进度
项目简介
使用一个线程实现文件拷贝,开启另一个线程计算并显示当前拷贝的进度
拷贝类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo301 extends Thread{@Overridepublic void run() {Demo302 bs = new Demo302();bs.setDaemon(true);//设置当前线程为守护线程bs.start();try {sleep(1);copy();} catch (InterruptedException e) {e.printStackTrace();}}public void copy() {FileInputStream fis = null;FileOutputStream fos = null;try {File sourceFile = new File("D:\\Java\\note\\java基础\\7.20note\\video\\02_异常处理.avi");//待拷贝的文件fis = new FileInputStream(sourceFile);File targetDir = new File("C:\\Users\\Huaazai\\Desktop\\exp");//欲拷贝到的位置fos = new FileOutputStream(new File(targetDir, sourceFile.getName()));byte[] b = new byte[1014];int len = 0;try {while ((len = fis.read(b)) != -1) {fos.write(b, 0, len);}} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}finally{try {fos.close();} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {new Demo301().run();}}
监控进度类
import java.io.File;
import java.text.DecimalFormat;public class Demo302 extends Thread{@Overridepublic void run() {File f1 = new File("C:\\Users\\Huaazai\\Desktop\\exp\\02_异常处理.avi");//已经拷贝了的文件File f2 = new File("D:\\Java\\note\\java基础\\7.20note\\video\\02_异常处理.avi");//待拷贝文件while(true){try {while(f1.length()<f2.length()){System.out.println("进度:"+ new DecimalFormat("00.0%").format(((double)f1.length()/(double)f2.length())));//大小相除获得进度,并设置进度格式sleep(1);if(f1.length()==f2.length()){System.out.println("复制完成!");}}} catch (InterruptedException e) {e.printStackTrace();}}}
}
代码运行结果
两个进程同时开始,同时结束,确保进度的正确性,由于对线程的学习还不够好,代码结果处有时候会出现一些问题,希望大佬们能给点建议?
实现文件拷贝并获取拷贝进度相关推荐
- linux拷贝文件夹时获取进度,实现本机拷贝显示进度的方法
实现本机拷贝显示进度的方法: 方法一:scp命令(推荐) # scp -r /mntroot@127.0.0.1:/home(拷贝文件夹要加参数 -r,拷贝文件不需要) (显示拷贝速度.剩余时间.已拷 ...
- [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...
写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的 ...
- 【Android RTMP】音频数据采集编码 ( FAAC 头文件与静态库拷贝到 AS | CMakeList.txt 配置 FAAC | AudioRecord 音频采样 PCM 格式 )
文章目录 安卓直播推流专栏博客总结 一. FAAC 头文件与静态库拷贝到 Android Studio 二. CMakeList.txt 构建脚本配置 三. Java 层 AudioRecord 音频 ...
- 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )
文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...
- python检测文件夹中新增文件_python检测文件夹变化,并拷贝有更新的文件到对应目录的方法...
检测文件夹,拷贝有更新的文件到对应目录 2016.5.19 亲测可用,若有借鉴请修改下文件路径: 学习python小一个月后写的这个功能,属于初学,若有大神路过,求代码优化~ newcopy.py: ...
- 使用父子两个进程拷贝同一个文件,父进程拷贝前一半,子进程拷贝后一半。
#include <head.h> // 父子进程在宏观上同时执行,微观上实际是时间片轮询串行. //两个进程同时调用同一个拷贝函数进行拷贝 int get_file_len(const ...
- C#文件操作 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...
- (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
为了快速构建项目,使用高性能框架是我的职责,但若不去深究底层的细节会让我失去对技术的热爱. 探究的过程是痛苦并激动的,痛苦在于完全理解甚至要十天半月甚至没有机会去应用,激动在于技术的相同性,新的框架不 ...
- linux 文件拷贝io,NIO拷贝文件真的比IO拷贝文件效率高?
今天发现项目中有个FileUtils.copy的工具方法, 打开后发现是基于io的, 我给改成了基于NIO的, 突然疑虑NIO拷贝文件真的如其他人说的那样比IO效率高很多么? 以下是我的工具方法: / ...
最新文章
- controller接收json数据_答疑 | 前后端分离,如何接收json数据?
- PIE_SDK.NET功能表
- 你真的会写留言功能吗?
- python中的itertools_在python中使用itertools操作csv数据
- java并发编程之美-阅读记录3
- 案例:监听域对象的生命周期
- 在markdown (csdn)博客上输出 右下小标,右上小标。
- 编程之美(The beauty of programming)
- iOS 颜色渐变圆环
- Kali基于字典的无线破解
- IMO2017day1.1
- Java中WeakHashMap实现原理深究
- arcmap中将一个面图层中的多个面分割成独立的面
- Tecplot中用excel表格绘制xy图的一点理解
- Pdp11 simh 虚拟机 运行 unix V6
- 发明专利、实用新型专利——下载步骤
- maven同一个项目中,一个子模块引用另一个子模块的类的方法
- 【WSL2】ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemo
- c语言小游戏代码(c语言小游戏代码简单)
- VHDL行为描述方法实现与门