如果将电脑看作文件存储的容器,那么有很多类型的文件存储,例如:分区、硬盘、卷标,等等。NIO.2 中可以通过 FileStore 这个抽象类来得到每种类型的文件存储信息。你可以获取文件存储的名字、类型、总空间、已用空间和剩余空间。
获得所有文件存储的属性
首先调用 FileSystems.getDefault() 方法获取默认文件系统,然后再调用 FileSystem.getFileStores() 方法得到文件存储列表。列表中的每个对象都是 FileStore 类型,可以调用上面的 name(),type(),getTotalSpace() 等方法来获取文件存储的信息。下面的代码片段将打印你机器的文件存储信息:
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
…
FileSystem fs = FileSystems.getDefault();
for (FileStore store : fs.getFileStores()) {
try {
long total_space = store.getTotalSpace() / 1024;
long used_space = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024;
long available_space = store.getUsableSpace() / 1024;
boolean is_read_only = store.isReadOnly();
System.out.println("--- " + store.name() + " --- " + store.type());
System.out.println("Total space: " + total_space);
System.out.println("Used space: " + used_space);
System.out.println("Available space: " + available_space);
System.out.println("Is read only? " + is_read_only);
} catch (IOException e) {
System.err.println(e);
}
}
下面是我运行后,在我机器上的输出结果:
--- --- NTFS
Total space: 39070048
Used space: 31775684
Available space: 7294364
--- --- NTFS
Total space: 39070048
Used space: 8530348
Available space: 30539700
--- SAMSUNG DVD RECORDER VOLUME --- UDF
Total space: 2936192
Used space: 2936192
Available space: 0
注意:从上面的例子中可以看到,如果文件存储没有名称,那么将会返回一个空字符串。另外,磁盘空间是按字节数返回的,为了可读性,你可以转换为 KB、MB 或者 GB。
获取特定文件所在的文件存储的属性
基于 FileStore 类,你可以获取某个文件所在的文件存储的属性。可以通过调用 Files.getFileStore() 方法来完成这个任务,这个方法需要传入一个 Path 对象,NIO.2 会判断文件所在的存储位置,并返回正确的文件存储信息。下面看看样例代码:
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
…
Path path = Paths.get("C:/rafaelnadal/tournaments/2009", "BNP.txt");
try {
FileStore store = Files.getFileStore(path);
long total_space = store.getTotalSpace() / 1024;
long used_space = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024;
long available_space = store.getUsableSpace() / 1024;
boolean is_read_only = store.isReadOnly();
System.out.println("--- " + store.name() + " --- " + store.type());
System.out.println("Total space: " + total_space);
System.out.println("Used space: " + used_space);
System.out.println("Available space: " + available_space);
System.out.println("Is read only? " + is_read_only);
} catch (IOException e) {
System.err.println(e);
}
运行后输出:
--- --- NTFS
Total space: 39070048
Used space: 8530348
Available space: 30539700
Is read only? false
一个文件存储可能支持一个或多个 FileStoreAttributeView 类,用来提供可读或可写的文件存储属性。下面是得到 FileStoreAttributeView 类的例子:
FileStoreAttributeView fsav =
store.getFileStoreAttributeView(FileStoreAttributeView.class);
注:另外,也可以直接调用 store.getAttribute() 来获取文件存储属性。
文章来源:
http://www.aptusource.org/2014/03/nio-2-file-store-attributes/
分享到:
相关推荐
李白高力士脱靴李白贺知章告别课本剧.pptx
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
C语言项目之超级万年历系统源码,可以做课程设计参考 文章参考:https://www.qqmu.com/4373.html
Jupyter-Notebook
51单片机加减乘除计算器系统设计(proteus8.17,keil5),复制粘贴就可以运行
《中国房地产统计年鉴》面板数据资源-精心整理.zip
Jupyter-Notebook
Jupyter-Notebook
毕业论文答辩ppt,答辩ppt模板,共18套
Jupyter-Notebook
《中国城市统计年鉴》面板数据集(2004-2020年,最新).zip
Python基础 本节课知识点: • set的定义 • Set的解析 • set的操作 • set的函数
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
兵制与官制研究资料最新版.zip
Jupyter-Notebook
七普人口数据+微观数据+可视化+GIS矢量资源-精心整理.zip
Support package for Hovl Studio assets.unitypackage
土壤数据库最新集.zip
Jupyter-Notebook
1991-2020年中国能源统计年鉴-能源消费量(分省)面板数据-已更至最新.zip