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

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

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

以上运行结果如下:

  1. C:\; 119; 71; 71
  2. D:\; 299; 233; 233
  3. E:\; 309; 308; 308
  4. F:\; 321; 320; 320
  5. W:\; 588; 358; 358

其中W盘为网盘。

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

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

输出结果:

  1. C:\
  2. D:\
  3. E:\
  4. F:\

3.在某一磁盘新建文件

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

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

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

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

  1. File file = new File("F:\\test");
  2. getAllFilePath(file);
  3.  
  4. public static void getAllFilePath(File dir){
  5. File[] files=dir.listFiles();
  6. for(int i=0;i<files.length;i++){
  7. if(files[i].isDirectory()){
  8. System.out.println(files[i].getPath());
  9. //这里面用了递归的算法  
  10. getAllFilePath(files[i]);
  11.  
  12. } else {
  13. System.out.println(files[i].getPath());
  14. }
  15. }
  16. }

输入结果:

  1. F:\test\a
  2. F:\test\a\b

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

  1. File file = new File("F:\\test");
  2. getAllFileSize(file);
  3.  
  4. public static long getAllFileSize(File dir){
  5. File[] files=dir.listFiles();
  6. for(int i=0;i<files.length;i++){
  7. if(files[i].isDirectory()){
  8. //这里面用了递归的算法  
  9. getAllFileSize(files[i]);
  10. } else {
  11. sum+=files[i].length();
  12. System.out.println(files[i]+"的大小:"+files[i].length());
  13. }
  14. }
  15. return sum;
  16. }

7. 保存文件

  1. File filePath = new File("D:\\11.png");
  2. String fileToday = DateUtils.formatTimeYMD(new Date());
  3. //创建目录rootPath
  4. String rootPath = "E:/fileUpload/"+fileToday+"/";
  5. File file = new File(rootPath);
  6. if (!file.exists()) {
  7. file.mkdirs();//目录不存在,创建根目录
  8. }
  9. String picPath = getPath(rootPath, "videoFile");
  10. saveFile(picPath, filePath);
  11.  
  12. private static boolean saveFile(String path,File uploadFile) {
  13. //Files.copy(source, out);//可以直接用这个方法保存
  14. int bufferSize = 8192;//8kb
  15. //写文件
  16. try {
  17. File f = new File(path+"/", uploadFile.getName());
  18. if (!f.exists()) {
  19. f.createNewFile();
  20. }
  21. InputStream in = new BufferedInputStream(new FileInputStream(uploadFile),bufferSize);
  22. OutputStream out =new BufferedOutputStream(new FileOutputStream(f),bufferSize) ;
  23. byte[] buffer = new byte[bufferSize];
  24. int len = 0;
  25. while ((len = in.read(buffer)) >0) {
  26. out.write(buffer,0,len);
  27. }
  28. out.flush();
  29. out.close();
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. return false;
  33. }
  34.  
  35. return true;
  36. }

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

7. 删除文件

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

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

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

 

java读取本机磁盘及遍历磁盘文件的更多相关文章

  1. java获取本机ip(排除虚拟机等一些ip)最终解,总算找到方法了

    本文参考https://blog.csdn.net/u011809209/article/details/77236602 本文参考https://blog.csdn.net/yinshuomail/ ...

  2. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  3. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  4. java读取各类型的文件

    java读取各类型的文件 用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-d ...

  5. 解析xlsx文件---Java读取Excel2007

    关于Java读取Excel2007的文章在Google.百度上搜索一下,没有太好的例子,实现的也不算太好.查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2 ...

  6. 详谈再论JAVA获取本机IP地址

    首先,你如果搜索“JAVA获取本机IP地址”,基本上搜到的资料全是无用的.比如这篇:http://www.cnblogs.com/zrui-xyu/p/5039551.html实际上的代码在复杂环境下 ...

  7. Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)

    转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...

  8. Java读取Excel数据

    Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...

  9. Java读取CSV和XML文件方法

    游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...

随机推荐

  1. 新手上路—Java的"瑞士军刀"

    “ Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大!这在我们的日常开发工作中,无疑是如虎添翼,事半功倍. Jodd = Tools + IoC + MVC ...

  2. QUIC

    QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议.在2016年11月国际互联网工程任务组(IETF)召开了第一次QUIC工作组 ...

  3. hdfs文件写入kafka集群

    1. 场景描述 因新增Kafka集群,需要将hdfs文件写入到新增的Kafka集群中,后来发现文件不多,就直接下载文件到本地,通过Main函数写入了,假如需要部署到服务器上执行,需将文件读取这块稍做修 ...

  4. [记录]Nginx配置实现&&和||的方法实例

    Nginx配置文件中if的&&和||的实现(nginx不支持&&和||的写法) 1.与(&&)的写法: set $condiction '';if ($ ...

  5. CAxWindow

    AtlAxWinInit(); CAxWindow m_wndFlashPlayer; CComPtr<IShockwaveFlash> m_FlashPtr; CComPtr<IU ...

  6. php if语句

    一.前言 if语句 是几乎所有编程语言都有的函数. 当然我们最好的php这么最好的语言也有啦~ 二.搞起! 直接上代码不多哔哔.talk is cheap show me the code 2.1 i ...

  7. classpath和classpath*区别

    classpath和classpath*区别: classpath:只会到你的class路径中查找找文件. classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. ...

  8. 数据挖掘之KMeans算法应用与简单理解

    一.背景 煤矿地磅产生了一系列数据: 我想从这些数据中,取出最能反映当前车辆重量的数据(有很多数据是车辆上磅过程中产生的数据).我于是想到了聚类算法KMeans,该算法思想比较简单. 二.算法步骤 1 ...

  9. spring 事务隔离级别导致的bug

    事情是这样的,ios进货单有一个数量加一手,减一手的功能,每加减一次就会异步调用后台的接口,后台判断sku如果不存在就插入,存在就更新.   问题描述: 当ios发了多次请求后, 在第二次请求的时候, ...

  10. 【Demo 1】基于object_detection API的行人检测 1:环境与依赖

    环境 系统环境: win10.python3.6.tensorflow1.14.0.OpenCV3.8 IDE: Pycharm 2019.1.3.JupyterNotebook 依赖 安装objec ...