361. Java IO API - 了解文件存储设备

361. Java IO API - 了解文件存储设备

在 Java NIO 中,FileStore 表示文件系统中的一个存储设备或卷。例如:

  • 在 Unix/Linux 系统中,每个挂载的文件系统(如 /, /home, /mnt/usb)都被视为一个 FileStore。
  • 在 Windows 中,每个卷(如 C:\、D:\)都映射为一个 FileStore。

🔍 如何列出系统中所有的 FileStore?

你可以使用 FileSystems.getDefault().getFileStores() 获取所有存储设备的信息,并打印它们的名称和类型。

✅ 示例代码:
java 复制代码
import java.nio.file.*;
import java.nio.file.FileStore;
import java.io.IOException;

public class FileStoreDemo {
    public static void main(String[] args) throws IOException {
        FileSystem fileSystem = FileSystems.getDefault();
        for (FileStore store : fileSystem.getFileStores()) {
            System.out.println(store.name() + " - " + store.type());
        }
    }
}
🖥 示例输出(Windows):
java 复制代码
Windows - NTFS
Data - NTFS
Video - NTFS
Transfer - FAT32

📌 store.name() 返回设备名,store.type() 返回文件系统类型(如 NTFS、FAT32、ext4 等)。


📁 获取系统中所有根目录(如 C:\、D:\、/)

你还可以遍历当前系统的根目录列表,检查每个目录是否可以访问。例如:

✅ 示例代码(检测是否可读取):
java 复制代码
for (Path root : FileSystems.getDefault().getRootDirectories()) {
    boolean isReadable = Files.isReadable(root);
    System.out.println("directory = " + root + " - " + isReadable);
}
🖥 示例输出(Windows):
java 复制代码
directory = C:\ - true
directory = D:\ - true
directory = E:\ - true
directory = F:\ - false
directory = G:\ - false

💡 某些盘符(如 F:\、G:\)可能存在,但并没有插入对应的设备(比如移动硬盘或U盘),因此不可读。


📌 应用场景举例

场景 使用方式
获取所有文件系统类型 遍历 getFileStores()
检测某个盘符是否可用 使用 Files.isReadable()
获取挂载点信息(如 UNIX 的挂载路径) 结合 store.name() 和文件路径
检测剩余容量或总容量 使用 FileStore.getUsableSpace()、getTotalSpace()

🛠 补充:获取存储空间信息

你可以获取每个存储设备的可用空间、总空间等:

java 复制代码
for (FileStore store : FileSystems.getDefault().getFileStores()) {
    System.out.println("Drive: " + store.name());
    System.out.println("Type: " + store.type());
    System.out.println("Total space: " + store.getTotalSpace());
    System.out.println("Usable space: " + store.getUsableSpace());
    System.out.println("------------");
}

✅ 总结

  • FileStore 是文件系统中的存储卷或挂载点。
  • 使用 getFileStores() 可列出所有存储设备。
  • Files.isReadable() 可以检测某个目录是否可以访问(设备是否挂载)。
  • 可进一步获取存储空间大小、类型等信息。
  • 在写底层文件监控、磁盘检查工具或跨平台文件操作工具时,FileStore 非常有用。
相关推荐
zhangzeyuaaa8 小时前
深入理解 Ruby 运算符:本质、分类、坑点与重载实战
开发语言·前端·ruby
一木 之林8 小时前
DeepSeek Agent 开发(一)
开发语言·前端·javascript
打工仔折腾 AI9 小时前
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张
人工智能·后端·python·深度学习·langchain·llama
树下水月9 小时前
Typora破解
linux·服务器·前端
可乐鸡翅yeah_9 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
用户5508492902569 小时前
CSS布局实战:从Flex到Grid的完整避坑指南
前端
用户5508492902569 小时前
前端接口请求层怎么封装?一个可落地的请求方案
前端
张彦峰ZYF9 小时前
加了锁不等于扛得住争用:synchronized、显式锁与 CAS 的语义分层、争用代价账本与选型判据
后端·同步设施·内置锁的四种状态与单向升级·可重入的由来与四条硬边界·显式锁的状态字段与等待队列·读写锁与邮戳锁·一次同步的开销账本
MetWeave9 小时前
跟着一条 SPECI 走流水线:从电报到界面
前端
专业程序开发源9 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计