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:\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读取本机磁盘及遍历磁盘文件的更多相关文章
- java获取本机ip(排除虚拟机等一些ip)最终解,总算找到方法了
本文参考https://blog.csdn.net/u011809209/article/details/77236602 本文参考https://blog.csdn.net/yinshuomail/ ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- java读取各类型的文件
java读取各类型的文件 用到的几个包 bcmail-jdk14-132.jar/bcprov-jdk14-132.jar/checkstyle-all-4.2.jar/FontBox-0.1.0-d ...
- 解析xlsx文件---Java读取Excel2007
关于Java读取Excel2007的文章在Google.百度上搜索一下,没有太好的例子,实现的也不算太好.查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2 ...
- 详谈再论JAVA获取本机IP地址
首先,你如果搜索“JAVA获取本机IP地址”,基本上搜到的资料全是无用的.比如这篇:http://www.cnblogs.com/zrui-xyu/p/5039551.html实际上的代码在复杂环境下 ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- Java读取Excel数据
Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 Java读取Excel数据,解析文本并格式化输出 下图是excel文件的路径和文件名 下图是exce ...
- Java读取CSV和XML文件方法
游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...
随机推荐
- Spring boot ,dubbo整合异常
Caused by: java.lang.IllegalArgumentException: java.lang.ClassCastException: com.guooo.boot.acc.serv ...
- 别混淆了sizeof(数组名)和sizeof(指针)
我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事.比如类似下面的代码片段: for(i = 0; i< length; i++) { printf("数 ...
- ServiceFabric极简文档-5.0 Service Fabric有状态与无状态
Service Fabric 应用程序方案 2017/08/14 作者 Edward Chen Jack Zeng Azure Service Fabric提供了一个可靠而灵活的平台,可用于编写和运行 ...
- BI之路学习笔记3--olap cube理解实例
为什么会产生OLAP? 随着数据库技术的发展应用,数据库存储的数据量从M字节以及G(千兆)字节过渡到T字节和P字节,同时,用户的查询需求也越来越复杂,设计的已不仅是查询或者操纵一张关系表中的一条或几条 ...
- 启动Chrome时自动开启开发者模式
右键点击Google Chrome浏览器图标→属性,在目标里面加上参数--auto-open-devtools-for-tabs即可
- 数据结构-二叉树(1)以及前序、中序、后序遍历(python实现)
上篇文章我们介绍了树的概念,今天我们来介绍一种特殊的树--二叉树,二叉树的应用很广,有很多特性.今天我们一一来为大家介绍. 二叉树 顾名思义,二叉树就是只有两个节点的树,两个节点分别为左节点和右节点, ...
- Python_我的学习笔记 (博客停更------)
贡献一张PyCharm快捷键图(图片是借用他人的)----------建议最大化查看,因为这样不会破坏布局 注:部分内容引用小甲鱼,其他等网页,网站内容.如有冒犯,请联系我. 2019.07.21 ...
- PHP -- 数据库访问
一.过时方法(PHP5以前的版本用的):用函数链接数据库,相当于面向过程的方式 //设置页面编码格式 header("content-type:text/html;charset=utf-8 ...
- JSP使用分层实现业务处理
在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connection co ...
- 计数排序and基数排序
1 计数排序,稳定 复杂度o(k + n) public static int[] countingSort(int[] nums) { int n = nums.length; ; ; i & ...