迟到的第14周作业

题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。

ps:第一次课请先完成前一部分。

源代码:

package T;

import java.io.*;
import java.util.Scanner;

public class TestMain {
    
        public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        System.out.println("请输入目录:");
        String path = in.next();
        System.out.println("请输入文件后缀类型:");
        String type = in.next();
            File[] list = new File(path).listFiles();
            for(File file : list)
            {
               if(file.isFile())
               {
                   if (file.getName().endsWith(type)) {
                       System.out.println(file.getAbsolutePath());
                   }
               }
            }
        }
}

输出结果:

 源代码:

Copy.java

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;

    public class Copy {
     
        public static void main(String[] args) throws IOException {
            // 用File对象封装目录
            File src = getDir();
            // 用File对象封装目录
            File dest = getDir();
            // 调用复制的方法
            copyFile(src, dest);
        }
     
        // 复制方法
        public static void copyFile(File src, File dest) throws IOException {
            // 通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
            File[] subFiles = src.listFiles();
            // 遍历这个File数组,得到每一个File对象
            for (File subFile : subFiles) {
                // 判断该File对象是否是文件
                if (subFile.isFile()) {
                    // 如果不是以java为后缀的不复制,执行下次循环
                    if (!subFile.getName().endsWith(".java")) {
                        continue;
                    } else {
                        // 新文件File对象//复制前改名
                        File newDir = new File(dest, subFile.getName().replace(".java", ".txt"));
                        // 用字节输入流封装数据源
                        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
                        // 用字节输出流封装目的地
                        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newDir));
                        byte[] arr = new byte[8 * 1024];
                        int len;
                        // 判断是否读到文件结尾
                        while ((len = bis.read(arr)) != -1) {
                            // 将数据写到文件中
                            bos.write(arr, 0, len);
                            // 刷新缓存流
                            bos.flush();
                        }
                        // 关闭流对象
                        bis.close();
                        bos.close();
                        System.out.println("文件复制成功");
                    }
                }
            }
        }
        public static File getDir() {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个文件夹路径");
            while (true) {
                String line = sc.nextLine();
                File file1 = new File(line);
               if (!file1.exists()) {
                    System.out.println("您输入的路径不存在,请重新输入!");
                }else {
                   
                    return file1;
                    
                }
                sc.close();
            }
        }
    }

输出结果:

 

 

 

posted @ 2019-12-04 22:51  随风而逝1996  阅读(147)  评论(0)    收藏  举报