迟到的第14周作业

题目:

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

源代码:Test.java(接收用户输入路径文件名)

/*Test类,主方法main
 * String型s1,s2,s3,s5接收用户输入内容
 * String型s4,s6合成文件路径
 * 创建Select 对象st,Shear 对象sr,
 * 调用st.SelectType()方法和sr.WriteIn方法()并传参
 * */
package ccut.edu.wj;
import java.util.Scanner;
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //用户输入需要的文件路径,文件类型
        Scanner in = new Scanner(System.in);
        System.out.print("请输入文件路径:");
        String s1 = in.nextLine();
        System.out.print("请输入文件格式后缀:");
        String s2 = in.nextLine();
        //选择需要的文件类型
        Select st = new Select();//创建Select类对象
        st.SelectType(s1, s2);//调用选择文件类型的方法
        //剪切选中的文件
        System.out.print("请输入需要剪切的文件名:");
        String s3 = in.nextLine();
        String s4 = s1+"\\\\"+s3+"."+s2;//合成路径全称
        System.out.print("请输入需要剪切到哪个目录:");
        String s5 = in.nextLine();
        String s6 = s5+"\\\\"+s3+"."+s2;//合成文件路径全称
        Shear sr =new Shear();//创建Shear类对象
        sr.WriteIn(s4,s6);//调用WriteIn方法,传参两个路径
    }
}

源代码:Select.java(显示目录下符合类型的所有文件)

/*Select类,方法SelectType
 * File 对象path
 * getFilenames类实现接口FilenameFilter
 * 构造方法getFilenames()
 * 字符数组filenames[]存储符合的文件名
 * */
package ccut.edu.wj;
import java.io.File;
import java.io.FilenameFilter;

public class Select {//选择指定类型文件
    public void SelectType(String s1,String s2) {
        File path = new File(s1);//创建File的对象path,并给文件路径s1
        FilenameFilter endName = new getFilenames(s2);//接口回调,给s2(文件类型)
        String[] filenames = path.list(endName);
        System.out.println("一共有"+filenames.length+"个"+s2+"类型的文件!");
        for(String name : filenames) {//循环输符合的文件名
            System.out.println(name);
        }
    }
}

class getFilenames implements FilenameFilter{//实现接口
    String style ;
    getFilenames(String style){//构造方法
        this.style=style;
    }
    public boolean accept(File file, String name) {//比较结尾
        return name.endsWith(style);
    }
}

源代码:Select.java(选一个文件剪切到另外一个目录中)

/*Shear类,方法WriteIn
 * File 对象f,f1。
 * 创建新文件f1.createNewFile();
 * while循环读取每行内容,同时把每行内容写入到新文件中
 * */
package ccut.edu.wj;
import java.io.*;

public class  Shear {
    
    public  void WriteIn(String s4,String s6) {
        File f = new File(s4);
        InputStreamReader in = null;
        BufferedReader bin =null;
        File f1 = new File(s6);
        Writer w = null;
        BufferedWriter bw= null;
        try {
            //FileReader不能手动设置编码,使用InputStreamReader来代替,用InputStreamReader来读取,后面配上编码格式
            in = new InputStreamReader(new FileInputStream(f),"UTF-8");//防止中文乱码
            bin = new BufferedReader(in);
            f1.createNewFile();//真正创建文件
            w = new FileWriter(f1,false);//覆盖写入
            bw = new BufferedWriter(w);
            while(true){//循环读取每行内容
                String line=bin.readLine();//按行读取文件
                if(line==null){//如果行为空就退出循环
                break;
                }
                //System.out.println(line);
                bw.write(line+'\n');//读取每行的同时,向创建的新文件写入每行内容,同时换行
                }
            System.out.println("剪切完成!");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bin.close();
                in.close();
                bw.close();
                w.close();
          f.delete(); }
catch (IOException e) { e.printStackTrace(); } } } }

 

运行结果:

剪贴后:

 

posted @ 2019-12-04 21:08  赵迎港20194660  阅读(160)  评论(0编辑  收藏  举报