如果将电脑看作文件存储的容器,那么有很多类型的文件存储,例如:分区、硬盘、卷标,等等。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/
分享到:
相关推荐
Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...
java NIO.zip
下面小编就为大家分享一篇JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现,具有很好的参考价值,希望对大家有所帮助
New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...
本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 ...
本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件...
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
这是一本介绍java io以及nio相关知识的书,书中对知识的讲解通俗易懂,是学习java nio以及复习java io相关知识的必备书籍。注意:本书为英文版!!!
java nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava ...
Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...
Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf
蔚来-NIO.US-新车上市,蔚来可期.pdf
Apress.Pro.Java.7.NIO.2.2011
This book covers all the important aspects involved in developing NIO.2-based applications. It provides clear instructions for getting the most out of NIO.2 and offers many exercises and case studies ...
Java NIO,Ron Hitchens 著,中文版 裴小星 译,Pro Java 7 NIO.2,Anghel Leonard 著,pdf文字版带书签,无安全限制
Pro Java 7 NIO.2 – PDF Books
在早期的 Java 版本中,文件 IO 操作功能一直相对较弱,主要存在以下问题: 缺乏对现代文件系统的支持:只提供的基础的文件操作,不支持很多现代的文件系统 API 不够直观:文件操作的 API 设计相对较为复杂和冗长,...
Pro Java 7 NIO.2.pdf,2011 by Anghel Leonard
简单的用Java的NIO读取文件的程序,给大家参考。