javaday15-IO作业

题目:把一个指定目录下的(目录、文件、文件中的数据)拷贝到另外一个目录下。
方法一:

package day16;



    /**
     * 字节流既可以在纯文本的时候使用,还可以在图片,视频,音频下使用
     *io流:字节文件流
     *      FileInputStream
     *      FileOutputStream
     */
        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 Homework_3 {
        public static void main(String[] args) {
            File f1 = new File("D:\\JavaSEWrokSpace\\day05");
            File f2 = new File("D:/FileIO");
            copyAll(f1,f2);//从指定的f1目录下复制到f2目录
            System.out.println("复制结束");
        }

        /**
         * 从指定的f1这个目录复制到f2目录下
         * @param f1
         * @param f2
         */
        private static void copyAll(File f1, File f2) {
            //f2创建文件夹
            File f = new File(f2,f1.getName());
            f.mkdirs();//d:/fileio/day05
            //1.获取f1目录下的所有文件
            File [] files = f1.listFiles();
            for (File file : files) {//获取每一个file对象
                //2.判断是文件还是目录
                if(file.isFile()){
                    //文件     数据复制
                    //TestByteIO.copyFile(file, new File(f2,file.getName()));
                copyFile(file, new File(f,file.getName()));//从f1复制数据到f2
                }

                if(file.isDirectory()){
                    //目录    创建目录,进入这个文件夹,获取他目录下的所有文件
                    /*File f = new File(f2,file.getName());
                    f.mkdirs();
                    copyAll(file,f)*/
                    copyAll(file,f);
                }

            }

        }
        public static void copyFile(File f1,File f2) {
            //f1读取
            //1.需要输入流
            InputStream is = null;
            OutputStream os = null;
            try{
                is = new FileInputStream(f1);
                //f2写入
                //2.需要输出流
                os = new FileOutputStream(f2);

                //3.不断读取
                byte[] buf = new byte[1024];
                int len;//读取的字节长度
                while((len = is.read(buf))!=-1){
                    /*String str = new String(buf,0,len);
                    System.out.println(str);*/
                    //4.吧读取的数据写入文件
                    os.write(buf, 0, len);
                }

                /*int len ;
                while((len=is.read())!=-1){
                    os.write(len);
                }*/
            }catch(IOException e){
                e.printStackTrace();
            }finally{
                //5.关闭
                try {
                    if(is!=null)
                        is.close();
                    if(os!=null)
                        os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }//刷新

            }


        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值