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. Spark 中 RDD的运行机制

    1. RDD 的设计与运行原理 Spark 的核心是建立在统一的抽象 RDD 之上,基于 RDD 的转换和行动操作使得 Spark 的各个组件可以无缝进行集成,从而在同一个应用程序中完成大数据计算任务 ...

  2. java中几个常见的问题

    1.正确使用equals方法 Object的equals方法容易抛出空指针异常,应使用常量或确定有值的对象来调用equals方法 例如: //不能使用一个值为null的引用类型变量来调用非静态方法,否 ...

  3. 自定义ApplicationContextInitializer接口实现

    简介 ApplicationContextInitializer是Spring框架提供的接口, 该接口的主要功能就是在接口ConfigurableApplicationContext刷新之前,允许用户 ...

  4. 在eclipse中利用正则表达式查找替换

    众所周知,eclipse是可以用正则表达式来进行查找的,那么怎么利用正则表达式进行替换呢? 方法也很简单,就是在Replace with: 里面输入$来代表捕获型括号的匹配结果,$1为第一个匹配结果, ...

  5. [记录]python异步编程async/await实现

    from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE import socket from types import corou ...

  6. UVA10071 Back to High School Physics:题解

    题目链接:https://www.luogu.org/problemnew/show/UVA10071 题意简叙: 粒子从0速度提速到t时速度为v,求出2*t时所运动的距离 分析: 这道题是一道物理题 ...

  7. JS实现当前页弹出窗口,且页面变灰不可操作

    使用JS在当前页面在div中加载弹出窗口,并让当前页面变灰不可操作. 加载弹出窗口的div需将宽高设置成整个页面的大小,以覆盖当前页面的内容. opacity:0.6: 页面可见度设置为0.6(1为完 ...

  8. 【数据库】postgresql数据库创建自增序列id的注意事项

    1.创建一张表 CREATE TABLE "public"."tt" ( "name" varchar(128), "status ...

  9. java练习---13

    public class Y { public static void main(String[] args) { // TODO Auto-generated method stub new Y() ...

  10. .net持续集成sonarqube篇之 sonarqube触发webhook

    系列目录 WebHook近些年来变得越来越流行,github,gitlab等代码托管平台都提供webhook功能.关于webhook这里不做详细介绍,大家可以参阅读相关互联网书籍或者材料来更深了解.可 ...