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文 ...
随机推荐
- 新手上路—Java的"瑞士军刀"
“ Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大!这在我们的日常开发工作中,无疑是如虎添翼,事半功倍. Jodd = Tools + IoC + MVC ...
- QUIC
QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议.在2016年11月国际互联网工程任务组(IETF)召开了第一次QUIC工作组 ...
- hdfs文件写入kafka集群
1. 场景描述 因新增Kafka集群,需要将hdfs文件写入到新增的Kafka集群中,后来发现文件不多,就直接下载文件到本地,通过Main函数写入了,假如需要部署到服务器上执行,需将文件读取这块稍做修 ...
- [记录]Nginx配置实现&&和||的方法实例
Nginx配置文件中if的&&和||的实现(nginx不支持&&和||的写法) 1.与(&&)的写法: set $condiction '';if ($ ...
- CAxWindow
AtlAxWinInit(); CAxWindow m_wndFlashPlayer; CComPtr<IShockwaveFlash> m_FlashPtr; CComPtr<IU ...
- php if语句
一.前言 if语句 是几乎所有编程语言都有的函数. 当然我们最好的php这么最好的语言也有啦~ 二.搞起! 直接上代码不多哔哔.talk is cheap show me the code 2.1 i ...
- classpath和classpath*区别
classpath和classpath*区别: classpath:只会到你的class路径中查找找文件. classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. ...
- 数据挖掘之KMeans算法应用与简单理解
一.背景 煤矿地磅产生了一系列数据: 我想从这些数据中,取出最能反映当前车辆重量的数据(有很多数据是车辆上磅过程中产生的数据).我于是想到了聚类算法KMeans,该算法思想比较简单. 二.算法步骤 1 ...
- spring 事务隔离级别导致的bug
事情是这样的,ios进货单有一个数量加一手,减一手的功能,每加减一次就会异步调用后台的接口,后台判断sku如果不存在就插入,存在就更新. 问题描述: 当ios发了多次请求后, 在第二次请求的时候, ...
- 【Demo 1】基于object_detection API的行人检测 1:环境与依赖
环境 系统环境: win10.python3.6.tensorflow1.14.0.OpenCV3.8 IDE: Pycharm 2019.1.3.JupyterNotebook 依赖 安装objec ...