文件管理系统

目标:本系统简单模拟widows系统文件管理器操作,能够简易的增删改查

1.搭建好SSM框架不再赘述

2.写好工具类FileUtils

          主要是读取系统磁盘以及获取某路径 下的文件和文件夹,层层递归

package com.controller;

import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.text.DecimalFormat;

public class FileUtils {
    public static void main(String[] args) {
        driver();
        String dirname = "D:\\";
        File f1 = new File(dirname);
        if (f1.isDirectory()) {
            System.out.println("目录 " + dirname);
            String s[] = f1.list();

            for (int i = 0; i < s.length; i++) {
                File f = new File(dirname + "/" + s[i]);
                if (f.isDirectory()) {
                    System.out.println(s[i] + " 是一个目录"+"目录路径"+f.getAbsolutePath());
                } else {
                    System.out.println(s[i] + " 是一个文件"+"文件路径"+f.getAbsolutePath());
                }
            }
        } else {
            System.out.println(dirname + " 不是一个目录");
        }
    }
    /**
     * 获取磁盘文件的大小
     * @param fileS
     * @return
     */
    public static String FormetFileSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "K";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "M";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "G";
        }
        return fileSizeString;
    }

    /**
     * 获取硬盘的每个盘符
     */
    public static void driver(){
        // 当前文件系统类
        FileSystemView fsv = FileSystemView.getFileSystemView();
        // 列出所有windows 磁盘
        File[] fs = File.listRoots();
        // 显示磁盘卷标
        for (int i = 0; i < fs.length; i++) {
            String s = fs[i].getAbsolutePath();
            System.out.println(s);
            System.out.println(fsv.getSystemDisplayName(fs[i]));
            System.out.print("总大小" + FormetFileSize(fs[i].getTotalSpace()));
            System.out.println("剩余" + FormetFileSize(fs[i].getFreeSpace()));
        }
    }
}

3.部分增删改的接口

  /**
     * 获取所有的系统盘
     */
    @RequestMapping(value = "/getSystem")
    @ResponseBody
    public List<Map<String,String>> getSystem(){
     List<Map<String,String>>listSystem=new ArrayList<>();
        // 当前文件系统类
        FileSystemView fsv = FileSystemView.getFileSystemView();
        // 列出所有windows 磁盘
        File[] fs = File.listRoots();
        List<File> files = Arrays.asList(fs);
        files.forEach(t->{
            Map<String,String>sysMap=new HashMap<>();
            sysMap.put("url",t.getAbsolutePath());
            sysMap.put("name",fsv.getSystemDisplayName(t));
            listSystem.add(sysMap);
            System.out.println(t.getAbsolutePath());//系统盘路径
            System.out.println(fsv.getSystemDisplayName(t));//系统盘全名称
        });
        return listSystem;
    }

    /**
     * 根据url获取子类文件和目录
     * @return
     */
    @RequestMapping(value = "/getFileSysByUrl")
    @ResponseBody
    public List<FileSys>getFileSysByUrl(String url){
        List<FileSys>list=new ArrayList<>();
        File f1 = new File(url);
        if (f1.isDirectory()) {
            System.out.println("目录 " + url);
            String s[] = f1.list();
            for (int i = 0; i < s.length; i++) {
                File f = new File(url + "/" + s[i]);
                FileSys sys=new FileSys();
                if (f.isDirectory()) {
                    sys.setDirectory(true);
                    System.out.println(s[i] + " 是一个目录"+"目录路径"+f.getAbsolutePath());
                } else {
                    sys.setDirectory(false);
                    System.out.println(s[i] + " 是一个文件"+"文件路径"+f.getAbsolutePath());
                }
                sys.setName(s[i]);
                sys.setGetAbsolutePath(f.getAbsolutePath());
                list.add(sys);
            }
        } else {
            System.out.println(url + " 不是一个目录");
        }
        return list;
    }


    /**
     * 添加文件或者目录
     * @param fatherUrl
     * @param name
     */
    @RequestMapping(value = "/addDirectoryOrFile")
    @ResponseBody
    public Map<String,String> addDirectoryOrFile(String fatherUrl,String name){
        Map<String,String>map=new HashMap<>();
        String url=fatherUrl+"\\"+name;
        File file=new File(url);
        if (name.contains(".")){
            //说明有后缀,是文件
            if (!file.exists()){
                try {
                    file.createNewFile();//有路径才能创建文件
                    map.put("code","1");
                    map.put("msg","添加成功!");
                } catch (IOException e) {
                    map.put("code","0");
                    map.put("msg","添加失败!");
                    e.printStackTrace();
                }
            }
        }else {
            if (!file.exists()) {
                try {
                file.mkdirs();// 能创建多级目录
                    map.put("code","1");
                    map.put("msg","添加成功!");
                } catch (Exception e) {
                    map.put("code","0");
                    map.put("msg","添加失败!");
                    e.printStackTrace();
                }
            }
        }
        return map;
    }


    /**
     * 删除文件或者目录以及目录下的文件
     * @param url
     * @return
     */
    @RequestMapping(value = "/delDirectoryOrFile")
    @ResponseBody
    public Map<String,String> delDirectoryOrFile(String url){
        Map<String,String>map=new HashMap<>();
        try {
            File file=new File(url);
            if (file.exists()){
                deleteFolder(file);
            }
            map.put("code","1");
            map.put("msg","删除成功");
        }catch (Exception e){
            System.out.println( e.getLocalizedMessage());
            map.put("code","0");
            map.put("msg","删除失败");
        }
        return map;
    }


    /**
     * txt文本编辑
     * @param url
     */
    @RequestMapping(value = "/editTxtFile")
    @ResponseBody
    public void editTxtFile(String url){

    }



    /**
     * 删除文件或者目录
     * @param folder
     */
    public static void deleteFolder(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteFolder(f);
                } else {
                    f.delete();
                }
            }
        }
        folder.delete();
    }

简易接口效果如下,界面暂时没写!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值