zoukankan      html  css  js  c++  java
  • 复制文件并显示百分比

    package LESSON12;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.text.DecimalFormat;
    public class demo5 {
        public static void main(String[] args) throws Exception{
            //复制文件并显示进度:0%..1%....100%    
            File filefrom=new File("D:/弹性表达式.doc ");//待拷贝文件
            File fileto=new File("E:文档/弹性表达式.doc  ");//拷贝之后的文件
            File parentFile =fileto.getParentFile();//以File类型返回父类
            if(!parentFile.exists()){//如果父类文件对象不存在
                parentFile.mkdirs();//创建多个文件夹
            }
            fileto.createNewFile();//创建文件    
            FileInputStream fis=new FileInputStream(filefrom);
            FileOutputStream fos=new FileOutputStream(fileto);
    //        int i=fis.read();//单个字符读取,速度慢
    //        while(i!=-1){
    //            fos.write(i);
    //            i=fis.read();
    //        }
            
            byte b[]=new byte[1024];
            int i=fis.read(b);
           //法1
    //        int j=1;
    //        while(i!=-1){
    //            fos.write(b);
    //            i=fis.read(b);
    //            double flen=filefrom.length();
    //            double bai=(b.length*j)/flen;
    //            String num=new DecimalFormat("00%").format(bai);
    //            System.out.println(num);
    //            j++;
    //        }
            
            
            //法二
            int length=b.length;//每次读取的长度
            long fileLength=filefrom.length();//总长度
            double sum=0;//声明一个变量接受叠加读取的长度
            while(i!=-1){
                fos.write(b);
                i=fis.read(b);
                 sum+=length;//
                double percent=sum/fileLength;
                if(percent>=1){//预防结果出现超过100%的现象
                    percent=1;
                }
                String num=new DecimalFormat("00%").format(percent);
                System.out.println("已复制:"+num);//每次读取总长度
                if(num.equals("100%")){
                    System.out.print("复制完成");
                }
                
            }      
            //关流:先开的后关
            //先关过滤流,再关节点流,先关输出流,再管输入流
            fos.close();
            fis.close();
        }
    }

    运行结果

  • 相关阅读:
    3.live555源码分析----延时队列
    RTP包的结构
    2.live555源码分析----服务端doEventLoop()函数分析
    1.live555源码分析----RSTPServer创建过程分析
    RTSP协议介绍 (转)
    搭建最简单的流媒体系统(服务器和客户端)
    谈一谈 MPU6050 姿态融合(转)
    Nginx的优化
    LAMP与LNMP加速与缓存优化
    Nginx在LNMP架构中的作用与虚拟主机配置
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11070367.html
Copyright © 2011-2022 走看看