第十四周作业

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

源代码:

FileFilter.java

package a8_1;
import java.io.File;
import java.io.FilenameFilter;
public class FileFilter implements FilenameFilter {  //通过非抽象子类实现
    String type;
    FileFilter(String type)  //构造方法FileFilter()
    {
        this.type=type;
    }
    public boolean accept(File dir, String name) {  //实现accept方法
        return name.endsWith(type);
    }
}

FILE_1.java

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;

public class FILE_1 {
    public static  void main(String[] args) {
        System.out.println("请输入显示目录以及一个文件类型:");
        Scanner reader1=new Scanner(System.in);
        Scanner reader2=new Scanner(System.in);
        String com=reader1.nextLine();
        String type=reader2.nextLine();
        File file=new File(com); //创建一个文件对象,参数是需要获取的文件地址
        FilenameFilter filter=new FileFilter(type);   //设置文件的类型
        String[] files = file.list(filter);  //获取符合条件的文件名
        for (String s : files) {
                System.out.println(s);  //通过for循环输出目录
        }
        /*以下代码主要实现文件的剪切功能 
                          确定文件的位置*/
        System.out.println("请输入要移动文件的绝对路径:");
        Scanner reader4=new Scanner(System.in);
        String str2=reader4.nextLine();
        File movename=new File(str2);
        //输入文件的新位置
        System.out.println("请输入要移动到的位置:");
        Scanner reader5=new Scanner(System.in);
        String str3=reader5.nextLine();
        File fmove=new File(str3);
        try {
             fmove.createNewFile();//创建同名文件
        } catch (IOException e) {
             e.printStackTrace();
        }
        
        InputStream input=null;
        BufferedInputStream bis=null;
        Writer writer = null;
        BufferedWriter bw = null;
        String s1="";   //用于存储原文本内容
        try {
            input = new FileInputStream(movename);
            bis = new BufferedInputStream(input);
            byte[] b = new byte[1024];
            int count = 0;
            while((count = bis.read(b, 0, 1024))!=-1){  //用读取下一个字节的操作控制循环
                s1=s1+new String(b, 0, count);
            }
            writer = new FileWriter(fmove);   
            bw = new BufferedWriter(writer);
            bw.write(s1);  //将内容写入到新的文本中
        } 
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        finally
        {
            try {
                bis.close();
                input.close();
                bw.close();
                writer.close();  //依次关闭文件
            }
            catch(IOException e) {
                e.printStackTrace();
            }
        }
        movename .delete();//将原有文件删除
  }
}

运行结果:

(一)显示目录

      

 (二)文件剪切

       

posted @ 2019-12-06 19:48  jie130  阅读(164)  评论(0编辑  收藏  举报