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/sun/JAVA  project";
        //目标目录
        String destPath="C:/Users/Administrator/Desktop/sun/haha";
        CopyDir(srcPath,destPath);

    }
    /*
     * 拷贝文件夹
     * src 源路径
     * dest 目标路径
     */
    public static void CopyDir(String srcPath,String destPath) {
        File src=new File(srcPath);
        File dest=new File(destPath);
        CopyDir(src,dest);

    }

    //拷贝文件夹细节
    public static void CopyDir(File src,File dest) {
        if(src.isFile()) {  //文件
            try {
                FileUtil.CopyFiles(src, dest);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        else if(src.isDirectory()) {  //文件夹
            //确保目标文件夹存在
             dest.mkdirs();
             //获取下一级的目录或者文件
             for(File sub:src.listFiles()) {                              //递归遍历子孙级
                 CopyDir(sub,new File(dest,sub.getName()));
             }
        }
    }

}

文件夹及文件拷贝封装

package cn.Reader;
/*
 * 文件操作
 * 1.文件拷贝
 * 2.文件夹拷贝
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileUtil {
    /*
     * 拷贝文件夹
     * src 源路径
     * dest 目标路径
     */
    public static void CopyDir(String srcPath,String destPath) {
        File src=new File(srcPath);
        File dest=new File(destPath);
        CopyDir(src,dest);

    }

    //拷贝文件夹细节
    public static void CopyDir(File src,File dest) {
        if(src.isFile()) {  //文件
            try {
                FileUtil.CopyFiles(src, dest);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        else if(src.isDirectory()) {  //文件夹
            //确保目标文件夹存在
             dest.mkdirs();
             //获取下一级的目录或者文件
             for(File sub:src.listFiles()) {                              //递归遍历子孙级
                 CopyDir(sub,new File(dest,sub.getName()));
             }
        }
    }
    public static void CopyFiles(String srcPath,String destPath ) throws IOException {
        CopyFiles(new File(srcPath),new File(srcPath));
    }

    //对该方法进行重载

    public static void CopyFiles(File  src,File dest ) throws IOException {
        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();

    }
    public static void main(String[] args) {
        File src=new File("C:/Users/Administrator/Pictures/Saved Pictures/a.jpg");
        File dest =new File("C:/Users/Administrator/Pictures/Saved Pictures/180.jpg");
        try {
            CopyFiles(src,dest);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

原文地址:https://www.cnblogs.com/ssxblog/p/11227205.html

时间: 2024-11-05 19:55:42

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

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流应用之文件目录拷贝

文件目录的拷贝 在学习IO流通常遇到目录的操作,涉及到一层层的目录和子孙级文件,往往使用递归思想. 递归思想之巧妙,但要处理大量的函数压栈和出栈问题,效率并不高. 主要思路: 将问题模块化:文件目录的拷贝其实就是分为 模块1:从源操作目录拷贝文件到目的操作目录 模块2:在目的操作文件目录下创建新的目录 模块1实现: 1 public static void test(String srcPath,String destPath) { 2 3 /**方法1. 4 * BufferedReader

IO流--文件处理

import java.io.*; public class io { public static void main(String[] args) { ListDemo(); File dir = new File("e:\\java\\Java学习视频\\20IO"); showDir(dir); } //在指定目录中删选出文件 public static void ListDemo() { File dir = new File("d:\\"); String

java IO流文件的读写具体实例(转载)

引言: 关于java IO流的操作是非常常见的,基本上每个项目都会用到,每次遇到都是去网上找一找就行了,屡试不爽.上次突然一个同事问了我java文件的读取,我一下子就懵了第一反应就是去网上找,虽然也能找到,但自己总感觉不是很踏实,所以今天就抽空看了看java IO流的一些操作,感觉还是很有收获的,顺便总结些资料,方便以后进一步的学习... IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader  低端流:所有的外界设备中的流都是低端流

黑马程序员 IO流 文件的分割与合并

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------package cn.itcast.IO; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

IO流(二):字节流及其缓冲流

一.IO概述 1.分类 1) 流向: 输入流 读取数据 输出流 写出数据 2)  数据类型: 字节流 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流  字符输入流 读取数据 Reader 字符输出流 写出数据 Writer 注意: 一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的. 每种基类的子类都是以父类名作为后缀名. XxxOutputStream XxxInputStream XxxReader

文件夹的拷贝

需要引用笔记<文件拷贝的实现>的方法 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

IO流 文件File 的listFiles 方法(重要)

package com.yyq; import java.io.*; //File 类 /* * 用来将文件或者文件夹封装成对象 * 方便对文件和文件夹的属性信息进行操作 * File对象可以作为参数传递给流的构造函数 * 流只能处理数据 * */ /* * File 类的常见方法: * 1.创建 * boolean createNewFile() * 在指定位置创建文件,如果该文件已经存在,则不创建,返回false * 和输出流不一样,输出流对象--创建文件,文件存在会覆盖. * mkdir

IO流文件的读写操作

字符流有两个抽象类:Writer   Reader.其对应子类FileWriter,FileReader可实现文件的读写操作 同样,字节流也有两个抽象类:InputStream OutputStream.其对应子类有FileInputStream,FileOutputStream可实现文件读写 IO流中的重要方法:read()方法返回-1,readLine方法返回null.用法列如:while((line=br.readLine())!=null).Scanne类中的hasNext()方法如果此