A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.heima.lianxi;

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;

public class Demo3 {

        /**
        * 需求:3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
         * @throws IOException
         */

        public static void main(String[] args) throws IOException {
                File src = Demo1.getDir();
                File dest = Demo1.getDir();
                copy(src,dest);
        }

        public static void copy(File src, File dest) throws IOException {
                //1.复制文件夹,要在被复制的文件夹里建一个和相同名称的复制文件
                File newDir = new File(dest,src.getName());
                newDir.mkdir();
                //2.获取复制文件里所有的文件和文件夹
                File[] subFiles = src.listFiles();
                //3.遍历
                for (File subFile : subFiles) {
                        if (subFile.isFile()) {
                                //4.判断是文件,则创建输入流对象,读取文件
                                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
                                //创建输出流读取文件,它的父级目录就是现在的newDir,复制的文件名和读取的文件名要保持一致
                                BufferedOutputStream bos
                                = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
                                int b;
                                while((b = bis.read()) != -1) {
                                        bos.write(b);
                                }
                                bis.close();
                                bos.close();
                        }else {
                                copy(subFile,newDir);
                        }
                }
        }

}

上述代码中
//4.判断是文件,则创建输入流对象,读取文件
                                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
                                //创建输出流读取文件,它的父级目录就是现在的newDir,复制的文件名和读取的文件名要保持一致
                                BufferedOutputStream bos
                                = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));

为什么读取的时候是subFile,而写入的要subFile.getName()??求解!!!

1 个回复

倒序浏览
定定定定定定,好东西,支持下
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马