面向对象 (12)文件查找

题目1(前一部分):编写一个应用程序,输入一个目录输出显示该目录下的所有文件。再输入一个类型,将该目录符合该类型的文件进行显示。

一、源程序

filework.java

/**文件查找 2个类3个方法
 * (1)手动输入目录 列出所有文件
 * (2)指定某类型 列出该类型文件
 */
package cn.edu.ccut.w1204;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Scanner;

class type implements FilenameFilter{//创建FilenameFilter接口子类
    String str = null;
    type(String str){//定义构造方法
        this.str = "."+str;
    }
    public boolean accept(File dir, String name) {//重写accept方法
        return name.endsWith(str);//匹配后面字段
    }
}

public class filework {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.print("请输入目录
");
        File file = new File(reader.nextLine());//获取输入的目录
        String[] all = file.list();//调用无参list方法获取全部文件名
        System.out.print("该目录下文件为:
");
        for(int i = 0;i<all.length;i++){//输出
            System.out.print(all[i]+"
");
        }
        System.out.print("请输入该目录下要求的文件类型
");
        type filetype = new type(reader.nextLine());
        String[] Type = file.list(filetype);//调用参数为文件类型的list方法获取该类文件名
        System.out.print("该目录下该文件类型的文件为:
");
        for(int i = 0;i<Type.length;i++){
            System.out.print(Type[i]+"
");
        }
    }
}

二、成功界面截图

面向对象 (12)文件查找

题目2(完全版):在上一题基础上,将这些文件中的某一个文件剪切到另外一个目录中。

一、源程序

/**剪切文件到另一目录
 * 2个类3个方法
 */
package cn.edu.ccut.w1204t2;

import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Scanner;

class type implements FilenameFilter{//创建FilenameFilter接口子类
    String str = null;
    type(String str){//定义构造方法
        this.str = "."+str;
    }
    public boolean accept(File dir, String name) {//重写accept方法
        return name.endsWith(str);//匹配后面字段
    }
}

public class cut {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.print("请输入目录:
");
        String way = reader.nextLine();//暂存目录
        File file = new File(way);//获取输入的目录
        String[] all = file.list();//调用无参list方法获取全部文件名
        System.out.print("该目录下文件为:
");
        for(int i = 0;i<all.length;i++){//输出
            System.out.print(all[i]+"
");
        }
        System.out.print("请输入该目录下要求的文件类型:
");
        type filetype = new type(reader.nextLine());
        String[] Type = file.list(filetype);//调用参数为文件类型的list方法获取该类文件名
        System.out.print("该目录下该文件类型的文件为:
");
        for(int i = 0;i<Type.length;i++){
            System.out.print(Type[i]+"
");
        }
        System.out.print("请输入需要剪切的文件名:
");
        String cut = reader.nextLine();//暂存文件名
        File cutfile = new File(way+"\"+cut);//存入原文件
        System.out.print("请输入该文件需要移动到的目录:
");
        String cutway = reader.nextLine(); //暂存目录
        File cutlist = new File(cutway);//存入目录        
        File newfile = new File(cutway+"\"+cut);//存入新目录下新文件
        try {
            newfile.createNewFile();//创建同名文件
        } catch (IOException e) {
            e.printStackTrace();
        }
        InputStream inputStream = null;//读出原文件内容对象创建
        BufferedInputStream bufferedInputStream = null;
        String data="";//内容暂存器
        Writer writer = null;//写入新文件内容对象创建
        BufferedWriter bufferedWriter = null;
        try {
            inputStream = new FileInputStream(cutfile);
            bufferedInputStream = new BufferedInputStream(inputStream);
            byte[] content = new byte[1024];//存储内容
            int count = 0;//记录长度
            while((count = bufferedInputStream.read(content, 0, 1024))!=-1){
                data=data+new String(content, 0, count);//遍历到字节存入字符串
            }
            writer = new FileWriter(newfile);
            bufferedWriter = new BufferedWriter(writer);
            bufferedWriter.write(data);//字符串写入新文件
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                bufferedInputStream.close();//关闭流
                inputStream.close();
                bufferedWriter.close();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        cutfile.delete();//删除原文件
    }
}

二、成功界面截图

 面向对象 (12)文件查找

 面向对象 (12)文件查找