用java控制台实现文件管理系统

发布于:2022-11-01 ⋅ 阅读:(483) ⋅ 点赞:(0)

前言:

本项目适合在校大学生和java基础阶段的初学者,希望各位可以看看。其中具有面向对象思想的运用,以及集合的运用

功能:

1:盘符查询功能

将本地计算机的盘符可视化的显示在控制台上,然后提供交互性输入,可以使大家可选择的进入不同的盘符去查询文件

效果图:

 

2:盘符内的所有文件查询功能

将本地计算机的盘符内的文件可视化的显示在控制台上,然后提供交互性输入,可以使大家可选择的进入不同的文件去进行操作

效果图:

因为文件夹里面的文件太多了,所以不能展示全。。但是如果直接运行我的代码,你们就可以一目了然了

 

3:对单个文件的重命名功能:

效果图:

 

就是将文件的名字改变。。相信大家有手就行。

4:对文件的移动位置功能

效果图 

改变文件的位置,有手就行

5:获取文件信息(文件路径,大小,可读,可写)功能

效果图

 

调几个api就好了

6:返回(继续显示当前所有的文件及目录)功能

效果图

 

需要一些小机灵等下直接放代码

项目弊端:

其中的删除方法还没写,以及回到盘符的方法也没写。因为需要留给你们一些自主思考的时间(主要是因为我忙),那么废话不多说直接上代码

代码:

Files类:

public class Files {
    private String name;
    private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Files{" +
                "name='" + name + '\'' +
                ", id=" + id +
                '}';
    }

    //查询文件夹文件的方法
    public File[] allFileSelect(ArrayList<PanFu> arrayList) {
        Scanner scanner = new Scanner(System.in);
        File[] fff = new File[]{};
        System.out.println("请输入你想进入的盘符");
        int x = scanner.nextInt();
        for (PanFu panFu1 : arrayList) {
            if (x == panFu1.getId()) {
                System.out.println(panFu1.getId());
                File file = new File(panFu1.getName());
                File[] files = file.listFiles();
//                for (File listFile : file.listFiles()) {
//                    System.out.println(listFile);
//                }
                return files;
            }

        }
        return fff;
    }

    //查询文件夹文件的方法
    public ArrayList<Files> intoFile(File[] files) {
        ArrayList<Files> files2 = new ArrayList<>();
        int id = 1;
        for (File file : files) {
            Files files1 = new Files();
            files1.setId(id);
            files1.setName(file.toString());
            System.out.print(files1.getId());
            System.out.println(files1.getName());
            files2.add(files1);
            id++;
        }
        return files2;
    }

    //获取文件对象的方法
    public Files getfile(ArrayList<Files> filesArrayList) {
        Files files = new Files();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你想进入的文件");

        int i = scanner.nextInt();
        for (Files files1 : filesArrayList) {
            if (files1.getId() == i) {
return files1;
            }
        }
        System.out.println("未找到");
        return files;
    }
    //重命名
    public void   rename(Files oneFile, String s){
        File file = new File(oneFile.getName());
        file.renameTo(new File(s));
//        System.out.println();


    }
    //获取文件信息
    public void getMessageOfFile(Files oneFile){
        File file = new File(oneFile.getName());
        System.out.println("该文件的绝对路径为"+file.getAbsolutePath());
        System.out.println("是否可以阅读"+file.canRead());
        System.out.println("是否可以阅读"+file.canWrite());
        System.out.println("文件长度为"+file.length());
    }
    //返回上级的方法
    public void backForm(Files oneFile){
        File file = new File(oneFile.getName());
        String str= file.toString().charAt(0)+":";
        File file1 = new File(str);
        for (File listFile : file1.listFiles()) {
            System.out.println(listFile);
        }

    }
}

PanFu类(英文不好):

public class PanFu {
  private   String name;
   private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "PanFu{" +
                "name='" + name + '\'' +
                ", id=" + id +
                '}';
    }

    public static ArrayList<PanFu> panFuSelect(){

        File[] files = File.listRoots();
        ArrayList<PanFu> arrayList = new ArrayList<>();
        int i=1;
        for (File f:files){
            PanFu panFu = new PanFu();
           panFu.setName(f.toString());
//            System.out.println(f.getName());
           panFu.setId(i);
            System.out.print(panFu.getId());
            System.out.println(f);
            arrayList.add(panFu);
            i++;

        }
        return arrayList;

    }
}

入口方法Demo类:

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//定义一个具体的可操作文件
        Files oneFile=new Files();
        //定义一个接受盘符对象的集合
        ArrayList<PanFu> arrayList = new ArrayList<>();
        //定义一个存文件的数组
        File [] arrayFile=new File[]{};
        //定义一个存文件的集合
        ArrayList<Files> filesArrayList = new ArrayList<>();
        PanFu panFu = new PanFu();
        Files files = new Files();
        //遍历盘符
        arrayList= panFu.panFuSelect();
        System.out.println(arrayList);
        //查询盘符
    arrayFile=files.allFileSelect(arrayList);
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入你想进入的盘符");
//       int x= scanner.nextInt();
//       for (PanFu panFu1:arrayList){
//           if (x==panFu1.getId()){
//               System.out.println(panFu1.getId());
//               File file = new File(panFu1.getName());
//               for (File listFile : file.listFiles()) {
//                   System.out.println(listFile);
//               }
//
//           }

       //遍历文件的方法
     filesArrayList=  files.intoFile(arrayFile);
//        System.out.println("请输入你想进入的文件");
//        int i = scanner.nextInt();
//        for (Files files1:filesArrayList){
//            if (files1.getId()==i){
//
//            }
//        }
        //获取具体文件的方法
     oneFile= files.getfile(filesArrayList);
        //进行操作文件的方法
        System.out.println(1+"重命名"+"\t"+2+"移动"+"\t"+3+"删除"+"\t"+4+"获取文件信息"+"\t"+5+"返回"+"\t");
        int i = scanner.nextInt();
        Scanner str=   new Scanner(System.in);
        switch (i){
            case 1:
                System.out.println(i+"请输入重命名");

             String s=str.next();
                files.rename(oneFile,s);
                System.out.println("重命名为"+s);
                break;
            case 2:
                System.out.println("请输入移动的位置");
                String s2=str.next();
                files.rename(oneFile,s2);
                System.out.println(i+"移动");

                break;
            case 3:
                System.out.println(i+"删除");
                break;
            case 4:
                System.out.println(i+"获取文件信息(文件路径,大小,可读,可写)");
                files.getMessageOfFile(oneFile);
                break;
            case 5:
                System.out.println(i+"返回(继续显示当前所有的文件及目录)");
                files.backForm(oneFile);
                break;
        }
    }

    }

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到