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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荒丶 中级黑马   /  2016-4-8 07:34  /  326 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
        //测试   拷贝整个文件夹
        public static void main(String[] args) throws IOException, AbsException{
                File file = getFile();
                File dir = getFile();
               
                copyDir(file, dir);
        }
        private static void demo1() throws IOException {
                FileInputStream fis = new FileInputStream("SB.bmp");
                FileOutputStream fos = new FileOutputStream("copy.bmp");
               
                int b;
                while((b = fis.read()) != -1) {
//                fos.write(b);
                }
               
                fis.close();
                fos.close();
        }
       
        /*
         * 拷贝一个文件夹copyDir()
         * 返回值类型void
         * 参数列表 需要File file(要拷贝的) File dir(拷贝放哪)
         * 分析
         * 0.定义一个小数组
         * 1.定义一个fileArr数组 通过listFile()获取数组
         * 2.定义一个文件输入流和输出流.接收Null
         * 3.通过length来遍历这个数组
         * 4.通过输入流得到filearr[] 输出流得到 new File(dir,filearr[].getName)
         * 5.通过while循环写入数据
         */
        public static void copyDir(File file , File dir) throws IOException {
                byte[] arr = new byte[1024 * 8];
                File[] fileArr = file.listFiles();
                FileInputStream fis = null;
                FileOutputStream fos = null;
               
                for (int i = 0; i < fileArr.length; i++) {
                        /**
                         * 可加入判断如果是文件夹,那么在新路径创建文件夹,递归这个方法
                         */
                        fis = new FileInputStream(fileArr[i]);
                        fos = new FileOutputStream(new File(dir , fileArr[i].getName()));
                       
                        int len;
                        while((len = fis.read(arr)) != -1) {
                                fos.write(arr, 0, len);
                        }
                        fis.close();
                        fos.close();
                }
        }

        /*
         * 定义一个方法获取键盘录入的文件路径,并封装成File对象返回
         * 1.返回类型File
         * 2.参数列表无
         */
        private static File getFile() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入文件路径:");
                while(true) {
                        String line = sc.nextLine();
                        File file = new File(line);//把文件名封装在File对象
                        if(!file.exists())
                                System.out.println("文件不存在,请重新输入:");
                        else if(file.isDirectory()){
                                System.out.println("您输入的是一个文件夹");
                                return file;
                        }
                        else
                                System.out.println("您输入的是一个文件");
                                return file;//为什么没有跳出循环,因为ruturn是跳出方法.方法都终止了.还有什么循环
                }
        }
}

class AbsException extends Exception {

        public AbsException() {
                super();
               
        }

        public AbsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
                super(message, cause, enableSuppression, writableStackTrace);
               
        }

        public AbsException(String message, Throwable cause) {
                super(message, cause);
               
        }

        public AbsException(String message) {
                super(message);
               
        }

        public AbsException(Throwable cause) {
                super(cause);
               
        }
       
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马