IO 文件夹的拷贝

package FileCopy;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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;
import java.util.LinkedList;
import java.util.Queue;

public class CopyFileV2 {
    public static void main(String agrs[]){
        String srcFileName = "F:" + File.separator + "ppt";
        String destFilePath = "D:" + File.separator + "copyFileExam";

//        copy(srcFileName, destFilePath);
        rNoCopy(srcFileName, destFilePath);
        System.out.println("拷贝完成!!!");

    }

    private static void rNoCopy(String fileName, String destFileName){

        Queue<String[]> fPQ = new LinkedList<String[]>();
        String[] s = new String[2];
        s[0] = fileName;
        s[1] = destFileName;
        fPQ.offer(s);

        int i = 0;

        while(!fPQ.isEmpty()){

            for(String[] st : fPQ){
                for(String str : st)
                System.out.println(str);
            }

            System.out.println("\n" + i++);
            String[] filePath = fPQ.poll();

            File file = new File(filePath[0]);
            File destFile = new File(filePath[1]);

            if(!destFile.exists()){
                destFile.mkdirs();
                System.out.println("创建多级列表成功!!!");
            }

            File files[] = file.listFiles();

            for(File f: files){
                if(f.isFile()){
                    fileCopy(f.getPath(), filePath[1] + File.separator + f.getName());
                }
                else if(f.isDirectory()){
                    String[] temps = new String[2]; 

                    temps[0] = f.getPath();
                    temps[1] = filePath[1] + File.separator + f.getName();

                    fPQ.offer(temps);
                }
            }
        }
    }

    private static void copy(String fileName, String destFileName){
        File file = new File(fileName);
        File destFile = new File(destFileName);

        File files[] = file.listFiles();

        if(!destFile.exists()){
            destFile.mkdirs();
        }

        for(File f: files){
            if(f.isFile()){
                fileCopy(f.getPath(), destFileName + File.separator + f.getName());
            }
            else if(f.isDirectory()){
                copy(f.getPath(), destFileName + File.separator + f.getName());
            }
        }

    }

    private static void fileCopy(String fileName, String destFileName){
        System.out.println("正在拷贝文件!!!");
        File file = new File(fileName);
        File destFile = new File(destFileName);

//        InputStream is = null;
//        OutputStream os = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            bis = new BufferedInputStream(new FileInputStream(file));
            bos = new BufferedOutputStream(new FileOutputStream(destFile));

            byte bytes[] = new byte[1024];
            while( bis.read(bytes) != -1 ){
                bos.write(bytes);
                bos.flush();
            }
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
//                os.flush();
//                is.close();
//                os.close();
                bos.flush();
                bis.close();
                bos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

//        private static void getAllFileList(String fileName){
//            File file = new File(fileName);
//            File files[] = file.listFiles();
//
//            for(File f: files){
//                if(f.isFile()){
//
//                }
//                if(f.isDirectory()){
//                    getAllFileList(f.toString());
//                }
//                else {
//                    System.out.println(f.getName());
//                }
//            }
//
//    }
    }
}

原文地址:https://www.cnblogs.com/854594834-YT/p/10527471.html

时间: 2024-08-03 09:52:07

IO 文件夹的拷贝的相关文章

IO流 文件夹的拷贝(字节流)

文件夹拷贝 package cn.Reader; import java.io.File; import java.io.IOException; /* * 文件夹的拷贝 * 1.文件复制 Copyfile * 2.文件夹创建 mkdirs() * 3.递归查找子孙级 */ public class CopyDir { public static void main(String [] args) { String srcPath="C:/Users/Administrator/Desktop/

Java字节流实现文件夹的拷贝

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** · java字节流实现文件夹的拷贝 · 拷贝文件夹,其中文件夹中又有多个文件 · 1.先遍历这个文件夹,判断是否是目录 · 2.创建文件夹 · 3.拷

IO文件夹拷贝(文件内含有文件和文件夹)

1 /** 2 * 文件夹拷贝(文件内含有文件和文件夹) 3 * 4 * @param src 5 * @param des 6 */ 7 private static void copy(String src, String des) { 8 File file1 = new File(src); 9 File[] fs = file1.listFiles(); 10 File file2 = new File(des); 11 if (!file2.exists()) { 12 file2.

文件夹的拷贝

需要引用笔记<文件拷贝的实现>的方法 1 public static void copyDirectory(File src,File dest){ 2 if(src.isDirectory()){ 3 dest=new File(dest,src.getName());//在dest文件夹下创建src文件夹 4 } 5 copyDir(src, dest); 6 } 7 public static void copyDir(File src,File dest){ 8 9 if(src.is

Linux下 两台机器文件/文件夹 相互拷贝

设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp [email protected]*.101:/temp/var/a.txt /test/ 或 进入A机器:scp /temp/var/a.txt [email protected]*.102:/test/ 把A下的文件夹(含子文件夹)/temp/var/拷贝到B机器/test/目录下: 进入B机器:scp -r [email protected]*.

文件与文件夹的拷贝

//文件拷贝---------------------------------------------------------------------------- public void copyFile(File src_, File dest_) { File src = src_;//源文件 File destination = dest_;//目的地 if(!src.isFile()) { new Exception("ssssssss"); } InputStream is

10.java拷贝文件夹

文件复制 文件夹拷贝 文件复制 文件复制步骤: 1.建立文件代理->File源文件/File目的文件 2.设立管道,建立管道 3.数据装箱 4.循环读取,循环输出 5.关闭流 package 文件夹的拷贝; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; impo

C# 备份、还原、拷贝远程文件夹

最近一直都很忙,非常抱歉好久没有写过博客了.最近遇到拷贝远程文件的一些工作,比如我们发布的web站点的时候,开发提供一个zip压缩包,我们需要上传到远程的服务器A,然后在部署(文件拷贝)到远程环境B和C,ABC都在一个局域网里面. 首先我们需要一个工具类来转换文件路径,本地地址与远程地址的转换 比如192.168.0.1上的D:\test 转换 为\\192.168.0.1\D$\test,文件路径的拼接, public class PathUtil { public static string

linux两台服务器之间文件/文件夹拷贝

跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹---------------------------------------------- 把当前文件夹tempA拷贝到 目标服务器10.127.40.25 服务器的 /tmp/wang/文件夹下 scp -r /tmp/tempA/ [email protected]:/tmp/wang/ 其中wasadmin是目标服务器的用户名,执行命令提示输入密码,然后输入密码即可 ---------------