黑马程序员技术交流社区

标题: 看如下代码,求解subFile和subFile.getName()为什么不一样? [打印本页]

作者: zhoujunjie    时间: 2016-5-22 22:42
标题: 看如下代码,求解subFile和subFile.getName()为什么不一样?
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()??求解!!!
作者: ft352177    时间: 2016-5-23 00:51
定定定定定定,好东西,支持下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2