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:\test\a
F:\test\a\b

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技术干货!

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

 

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. ElasticStack学习(七):ElasticSearch之Mapping初探

    一.Mapping的概念 1.Mapping类似于数据库中的Schema的定义,作用如下: 1)定义索引中的字段的名称: 2)定义字段的数据类型,例如字符串.数字.日期.布尔等: 3)对每个字段进行倒 ...

  2. 个人永久性免费-Excel催化剂功能第95波-地图数据挖宝之IP地址转地理地址及不同经纬度版本转换

    经过上一波POI兴趣点查询后,地图数据挖宝也接近尾声,这次介绍在数据采集.准备过程中需要用到的一些转换功能,有IP地址转换地理地址及不同地图版本的经纬度转换. 背景知识 在电商.网络的数据分析过程中, ...

  3. Excel催化剂开源第28波-调用Google规划求解库

    在Excel催化剂的自定义函数中,有规划求解的函数,用于在一些凑数的场景,某财务工作网友向我提出的需求,例如用于凑发票额使用. 一般开发票的场景是多次采购合在一起开具,即多个订单产生后开,同时发票一般 ...

  4. 题解 P2835 【刻录光盘】

    P2835 刻录光盘 来一波FLOYD最短代码qwq #include<cstdio> using namespace std; #define FOR(i) for (register ...

  5. 使用RabbitMQ做数据接收和处理时,自动关闭

    场景:N个客户端向MQ里发送数据:服务器上有另一个控制台程序(假设叫ServerClient)来处理这里数据(往数据库保存).方向为Client * n→MQSERVER→ServerClient 问 ...

  6. jquery:为动态加载的元素绑定事件

    最近在做项目的时候发现的一个问题,通过ajax动态加载出来的一个button值绑定不了点击事件.我使用的是datatables这款表单插件,表单内容是通过ajax动态渲染出来的. 解决方案: 通过Go ...

  7. HTTP_1_Web及网络基础

    Web使用一种HTTP(HyperText TransFer Protocol,超文本协议)的协议作为规范,完成从客户端到服务器等一系列运作流程.可见web是建立在HTTP协议上通信的. 通常我们使用 ...

  8. rabbitMQ_workQueue(二)

    生产者发送多个消息到队列,由多个消费者消费.   如果一个消费者需要处理一个耗时的任务,那么队列中其他的任务将被迫等待这个消费者处理完成,所以为了避免这样的情况,可以建立对个消费者进行工作. 本例中使 ...

  9. 【Android】java.lang.SecurityException: getDeviceId: Neither user 10065 nor current process has android.permission.READ_PHONE_STATE

    RT, 异常信息如下: java.lang.SecurityException: getDeviceId: Neither user 10065 nor current process has and ...

  10. 新IT运维时代 | Docker运维之最佳实践-下篇

    上篇针对操作系统.主机配置.容器镜像.容器运行时四大方面分享一些Docker的运维经验,本篇将着重在Docker Daemon参数和权限两个方面进一步分享.(阅读上篇请点击右侧:新IT运维时代 | D ...