zoukankan      html  css  js  c++  java
  • Java中实现复制文件或文件夹

       拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。

    [java] view plaincopyprint?
    import java.io.*;  
    /** 
     * 复制文件夹或文件夹 
     */  
    public class CopyDirectory {  
        // 源文件夹   
        static String url1 = "f:/photos";  
        // 目标文件夹   
        static String url2 = "d:/tempPhotos";  
        public static void main(String args[]) throws IOException {  
            // 创建目标文件夹   
            (new File(url2)).mkdirs();  
            // 获取源文件夹当前下的文件或目录   
            File[] file = (new File(url1)).listFiles();  
            for (int i = 0; i < file.length; i++) {  
                if (file[i].isFile()) {  
                    // 复制文件   
                    copyFile(file[i],new File(url2+file[i].getName()));  
                }  
                if (file[i].isDirectory()) {  
                    // 复制目录   
                    String sourceDir=url1+File.separator+file[i].getName();  
                    String targetDir=url2+File.separator+file[i].getName();  
                    copyDirectiory(sourceDir, targetDir);  
                }  
            }  
        }  
    // 复制文件   
    public static void copyFile(File sourceFile,File targetFile)   
    throws IOException{  
            // 新建文件输入流并对它进行缓冲   
            FileInputStream input = new FileInputStream(sourceFile);  
            BufferedInputStream inBuff=new BufferedInputStream(input);  
      
            // 新建文件输出流并对它进行缓冲   
            FileOutputStream output = new FileOutputStream(targetFile);  
            BufferedOutputStream outBuff=new BufferedOutputStream(output);  
              
            // 缓冲数组   
            byte[] b = new byte[1024 * 5];  
            int len;  
            while ((len =inBuff.read(b)) != -1) {  
                outBuff.write(b, 0, len);  
            }  
            // 刷新此缓冲的输出流   
            outBuff.flush();  
              
            //关闭流   
            inBuff.close();  
            outBuff.close();  
            output.close();  
            input.close();  
        }  
        // 复制文件夹   
        public static void copyDirectiory(String sourceDir, String targetDir)  
                throws IOException {  
            // 新建目标目录   
            (new File(targetDir)).mkdirs();  
            // 获取源文件夹当前下的文件或目录   
            File[] file = (new File(sourceDir)).listFiles();  
            for (int i = 0; i < file.length; i++) {  
                if (file[i].isFile()) {  
                    // 源文件   
                    File sourceFile=file[i];  
                    // 目标文件   
                   File targetFile=new   
    File(new File(targetDir).getAbsolutePath()  
    +File.separator+file[i].getName());  
                    copyFile(sourceFile,targetFile);  
                }  
                if (file[i].isDirectory()) {  
                    // 准备复制的源文件夹   
                    String dir1=sourceDir + "/" + file[i].getName();  
                    // 准备复制的目标文件夹   
                    String dir2=targetDir + "/"+ file[i].getName();  
                    copyDirectiory(dir1, dir2);  
                }  
            }  
        }  
    }  
  • 相关阅读:
    mvn command is not recognized as an internal or external command
    mac搭建nginx和wordpress开发环境
    搭建nginx+php环境时遇到”file not found"的问题
    MAC下bash配置文件的加载顺序
    lsof的注意事项
    理解字符集、字符编码、ASCII、Unicode、UTF-8
    初学markdown有感
    AngularJS开发指南-Animations
    #正则表达式# 学习笔记
    vi学习笔记/基本操作方法
  • 原文地址:https://www.cnblogs.com/huidaoli/p/3209840.html
Copyright © 2011-2022 走看看