迟到的第14周作业

# 题目

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

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

# 源代码

  ## 显示文件夹内容

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.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;

/**
 * 浏览文件,及剪切文件 编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。
 * ps:第一次课请先完成前一部分。
 * 
 * @author 喵
 * @date 2019年12月8日上午9:33:31
 */
public class CutDemo {

    static class DirFilter implements FilenameFilter {
        String type;

        DirFilter(String type) {
            this.type = type;
        }

        @Override
        public boolean accept(File dir, String name) {
            // 过滤掉除要求外的文件
            if (name.endsWith(type)) {
                return true;
            }
            return false;
        }
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入需查找的目录:");
        final String path = input.next();
        System.out.println("请输入文件类型:");
        final String endName = input.next();

        File file = new File(path);
//        if (!file.exists()) {
//            System.out.println("请输入正确的路径!");
//            return;
//        }
        String[] fileName = file.list(new DirFilter(endName));
        System.out.println("共有" + fileName.length + "个文件");
        for (int i = 0; i < fileName.length; i++) {
            System.out.println(fileName[i]);
        }
        
        CutFileBufferdeString(path);
    }

  ## 剪切文件

private static boolean CutFileBufferdeString(String path1) {
        System.out.println("请输入需要剪切的文件:(文件名+后缀名)");
        Scanner input = new Scanner(System.in);
        String Name = input.next();
        final String FilePath = path1 + "\\" + Name;
        System.out.println("将文件剪切到:");
        String copyPath = input.next();
        final String path2 = copyPath + "\\" + Name; 
        
        File file = new File(FilePath);    //要剪切的文件
        if (!file.exists()) {
            System.out.println("文件不存在,剪切失败!");
            return false;
        }
        try (
            InputStream inStream = new FileInputStream(file);
            BufferedInputStream bInStream = new BufferedInputStream(inStream);
            OutputStream outStream = new FileOutputStream(path2);
            BufferedOutputStream bOutStream = new BufferedOutputStream(outStream);
        ){
            int i = -1;    //读取出的临时变量
            while((i = bInStream.read()) != -1) {
                bOutStream.write(i);     //读取一个字节就写入到缓冲区中
            }
            System.out.println("文件剪切成功!");
            file.deleteOnExit();         //程序结束后删除
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        return false;
    }
}

# 测试结果

 

 

 

 

posted @ 2019-12-08 11:51  摸凹猫  阅读(126)  评论(0)    收藏  举报