zoukankan      html  css  js  c++  java
  • java读取本机磁盘及遍历磁盘文件

    1. 获取本机所有盘符信息

    //1. 获取本机盘符
    File[] roots = File.listRoots();
    for (int i = 0; i < roots.length; i++) {
        System.out.print(roots[i].getPath()+"; ");//磁盘路径
        System.out.print(roots[i].getTotalSpace()/1024/1024/1024+"; ");//磁盘总空间大小
        System.out.print(roots[i].getUsableSpace()/1024/1024/1024+"; ");//剩余磁盘空间大小
        System.out.println(roots[i].getFreeSpace()/1024/1024/1024);//剩余磁盘空间大小
    }

    默认获取磁盘空间单位是BT,操作系统是这样算的 1G=1024MB, 1MB=1024KB, 1KB=1024BT

    以上运行结果如下:

    C:; 119; 71; 71
    D:; 299; 233; 233
    E:; 309; 308; 308
    F:; 321; 320; 320
    W:; 588; 358; 358

    其中W盘为网盘。

    2. 仅获取本地磁盘(除去网络磁盘等)

    File[] roots = File.listRoots();
    FileSystemView sys = FileSystemView.getFileSystemView();
    for (int i = 0; i < roots.length; i++) {
        if(!sys.getSystemTypeDescription(roots[i]).equals("本地磁盘")){
            continue;
        }
        System.out.println(roots[i].getPath());// 磁盘路径
    }

    输出结果:

    C:
    D:
    E:
    F:

     3.在某一磁盘新建文件

    File file = new File("F:\test\a\b");
    if (!file.exists()) {
        file.mkdirs();// 目录不存在,创建根目录
    }

    4. 遍历某一个盘符的文件

    File file = new File("E:\");
    SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
    System.out.println(file.getTotalSpace()/1024/1024/1024);// b-kb-M-G
    if (file.isAbsolute()) { // 判断是否为根目录
        File[] list = file.listFiles(); // 使用数组接收带有完整路径的文件夹
        for (int i = 0; i < list.length; i++) {
            System.out.println(list[i].getPath());
            System.out.println(list[i].getTotalSpace()); 
            System.out.println(dateFormat.format(list[i].lastModified()));
            
        }
    }

    5.遍历某一文件夹下的文件

    File file = new File("F:\test");
    getAllFilePath(file);
    
    public static void getAllFilePath(File dir){
        File[] files=dir.listFiles();
        for(int i=0;i<files.length;i++){
            if(files[i].isDirectory()){
                System.out.println(files[i].getPath());
                //这里面用了递归的算法  
                getAllFilePath(files[i]);
                
            } else {
                System.out.println(files[i].getPath());
        }
        }
     }

    输入结果:

    F:	esta
    F:	esta

    6. 获取某一个盘符或文件夹下的所有文件的大小

    File file = new File("F:\test");
    getAllFileSize(file);
    
    public static long getAllFileSize(File dir){
        File[] files=dir.listFiles();
        for(int i=0;i<files.length;i++){
            if(files[i].isDirectory()){
                //这里面用了递归的算法  
                getAllFileSize(files[i]);
            } else {
                sum+=files[i].length();
                System.out.println(files[i]+"的大小:"+files[i].length());
        }
        }
        return sum;
     }

    7. 保存文件

    File filePath = new File("D:\11.png");
    String fileToday = DateUtils.formatTimeYMD(new Date());
    //创建目录rootPath
    String rootPath = "E:/fileUpload/"+fileToday+"/";
    File file = new File(rootPath);
    if (!file.exists()) {
        file.mkdirs();//目录不存在,创建根目录
    }
    String picPath = getPath(rootPath, "videoFile");
    saveFile(picPath, filePath);
    
    
    private static boolean saveFile(String path,File uploadFile) {
        //Files.copy(source, out);//可以直接用这个方法保存
        int bufferSize = 8192;//8kb
        //写文件
        try {
            File f = new File(path+"/", uploadFile.getName());
            if (!f.exists()) {
                f.createNewFile();
            }
            InputStream in = new BufferedInputStream(new FileInputStream(uploadFile),bufferSize);
            OutputStream out =new BufferedOutputStream(new FileOutputStream(f),bufferSize) ;
            byte[] buffer = new byte[bufferSize];
            int len = 0;
            while ((len = in.read(buffer)) >0) {
                out.write(buffer,0,len);
            }
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        
        return true;
    }

    如果不需要推送进度的话,可以直接调用Files.copy(source, out)方法进行复制文件。

    7. 删除文件

    File filePath = new File("D:/home/logs/backupsystem_error.log");
    boolean result = filePath.delete();//true表示删除成功
    System.out.println(result);

    欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!

       ▼微信扫一扫下图↓↓↓二维码关注

     

  • 相关阅读:
    实习记录2
    实习记录1
    silverlight中 Storyboard(动画)的使用,实现球的上下循环移动,左右移动,及旋转功能
    实习记录7(正则表达式)
    SilverLight 控件ListBox中的SelectionChanged事件
    OpenStack collectd的从零安装服务端
    OpenStack 的防火墙规则流程
    OpenStack 的NAT解决办法
    OpenStack 界面开发中的排序问题
    OpenStack 界面开发中response.body的中文编码问题
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/11369206.html
Copyright © 2011-2022 走看看