文件拷贝到另一文件中和文件夹拷贝到另一个文件夹中

文件夹拷贝到另一文件中

 

文件的拷贝,程序为桥梁

建立联系     File对象    文件源头      拷贝至目的地

选择流        文件输出流 OutputStream   FileOutputStream

                   文件输入流 InputStream      FileInpuStream

操作            byte[] b = new byte[1024];

                   int len = 0;

                   while(len = (输入流.read(b)) != -1){

                            输出流.write ()+b 

                   }

释放资源    关闭输出、输入流

 

package com.java;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
  
/**
 1、建立联系   File对象   源头 目的地
2、选择流     
        文件输入流  InputStream FileInputStream
         文件输出流  OutputStream FileOutputStream
3、操作  :  拷贝
        byte[] flush =new byte[1024]; 
        int len =0;
         while(-1!=(len=输入流.read(flush))){  
               输出流.write(flush,0,len)
         }
             输出流.flush
4、释放资源 :关闭 两个流
  
  
 * @author Administrator
 *
 */
public class demo9 {
  
       /**
        * @param args
        * @throws FileNotFoundException 
        */
       public static void main(String[] args) {
              String srcPath ="F:/ld/lzy.txt";
              String destPath="G:/www/11/11.txt";
              File src=new File(srcPath);
              File dest=new File(destPath);
              try {
                     copyFile(src,dest);
              } catch (FileNotFoundException e) {
                     e.printStackTrace();
                     System.out.println("文件不存在");
              } catch (IOException e) {
                     e.printStackTrace();
                     System.out.println("拷贝文件失败|关闭流失败");
              }
       }
       /**
        * 文件的拷贝
        * @param  源文件路径
        * @param  目录文件路径
        * @throws FileNotFoundException,IOException
        * @return 
        */
              public static void copyFile(File src,File dest) 
              throws FileNotFoundException,IOException {
                     //1、建立联系 源(存在且为文件) +目的地(文件可以不存在)  
                     if(! src.isFile()){ //不是文件或者为null
                            System.out.println("只能拷贝文件");
                            throw new IOException("只能拷贝文件");
                     }
                     //2、选择流
                     InputStream is =new FileInputStream(src);
                     OutputStream os =new FileOutputStream(dest);
                     //3、文件拷贝   循环+读取+写出
                     byte[] flush =new byte[1024];
                     int len =0;
                     //读取
                     while(-1!=(len=is.read(flush))){
                            //写出
                            os.write(flush, 0, len);
                     }
                     os.flush(); //强制刷出
                     
                     //关闭流
                     os.close();
                     is.close();
              }
  

 

 

}

 

 

 

文件夹拷贝到另一文件夹中

思路:遍历源文件夹,源文件是文件的话依次把源文件拷贝到目的文件,源文件是目录的话就在目的文件中新建

package com.java;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;


public class demo8 {

public static void main(String args[]){

String srcPath="F:/ld";
String destPath="G:/lzy";
File src=new File(srcPath);
File dest=new File(destPath);
if(src.isDirectory()){
dest=new File(destPath);
}
try {
copyDirDetail(src, dest);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


/**
     * 拷贝文件夹细节
     * @param src
     * @param dest
     */
    public static void copyDirDetail(File src,File dest) throws 
    FileNotFoundException,IOException{
           if(src.isFile()){ //文件
                  try {
                         demo9.copyFile(src,dest);
                         
                  } catch (FileNotFoundException e) {
                         //e.printStackTrace();
                         throw e;
                  } catch (IOException e) {
                         //e.printStackTrace();
                         throw e;
                  }
           }else if(src.isDirectory()){ //文件夹
                  //确保目标文件夹存在
                  dest.mkdirs();
                  //获取下一级目录|文件
                  for(File sub:src.listFiles()){
                         copyDirDetail(sub,new 
                         File(dest,sub.getName()));
                  }
           }
    }

}

 

很有用的东西,特别对于新手非常有用,网上找不到的,西面是源码,看不懂的你只有下载了! .版本 2 .支持库 EThread 清除数组 (目录数组) 清除数组 (文件数组) 按钮3.禁止 = 真 启动线程 (&线程_进度显示, , 线程句柄) .子程序 线程_进度显示 .局部变量 计次, 整数型 .局部变量 dir, 文本型 .局部变量 计次一, 整数型 .局部变量 path, 文本型 .局部变量 swit, 逻辑型 .局部变量 num, 整数型 原路径 = 取当前目录 () + “\3” 目标路径 = “c:\3” 子程序_核心搜索 (取当前目录 () + “\3”) 进度条1.位置 = 0 进度条1.最大位置 = 取数组成员数 (目录数组) .计次循环首 (取数组成员数 (目录数组), 计次) dir = 子文本替换 (目录数组 [计次], 原路径, 目标路径, , 1, 真) 创建目录 (dir) 进度条1.位置 = 进度条1.位置 + 1 .计次循环尾 () 标签3.标题 = “更新...” 进度条1.位置 = 0 进度条1.最大位置 = 取数组成员数 (文件数组) .计次循环首 (取数组成员数 (文件数组), 计次一) path = 子文本替换 (文件数组 [计次一], 原路径, 目标路径, , 1, 真) swit = CopyFileExA (文件数组 [计次一], path, &CopyProgressRoutine;, 0, 0, #COPY_FILE_RESTARTABLE) .如果真 (swit = 假) num = num + 1 .如果真结束 进度条1.位置 = 进度条1.位置 + 1 .计次循环尾 () 标签3.标题 = “报告老大已经全部更新... 失败:” + 到文本 (num) + “个” 按钮3.禁止 = 假 .子程序 CopyProgressRoutine, 整数型 .参数 TotalFileSize, 双精度小数型 .参数 TotalBytesTransferred, 双精度小数型 .参数 StreamSize, 双精度小数型 .参数 StreamBytesTransferred, 双精度小数型 .参数 dwStreamNumber .参数 dwCallbackReason .参数 hSourceFile .参数 hDestinationFile .参数 lpData 进度条2.位置 = 取整 (TotalBytesTransferred × 10000 ÷ (TotalFileSize × 10000) × 100) 返回 (#PROGRESS_CONTINUE) .子程序 子程序_核心搜索 .参数 目标目录, 文本型 .局部变量 文件名, 文本型 文件名 = 寻找文件 (目标目录 + “\*.*”, #子目录) .判断循环首 (文件名 ≠ “”) .如果真 (文件名 ≠ “.” 且 文件名 ≠ “..”) 加入成员 (目录数组, 目标目录 + “\” + 文件名) 子程序_核心搜索 (目标目录 + “\” + 文件名) .如果真结束 文件名 = 寻找文件 (, #子目录) .判断循环尾 () 文件名 = 寻找文件 (目标目录 + “\*.*”, ) .判断循环首 (文件名 ≠ “”) 加入成员 (文件数组, 目标目录 + “\” + 文件名) 文件名 = 寻找文件 (, ) .判断循环尾 () .子程序 __启动窗口_可否被关闭, 逻辑型 .如果真 (按钮3.禁止) .如果真 (信息框 (“正在复制文件,是否强制关闭?”, 4 + 48, ) = 6) 返回 (假) .如果真结束 强制结束线程 (线程句柄)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值