`
cucaracha
  • 浏览: 138194 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:86092
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:35791
社区版块
存档分类
最新评论

[NIO.2] 第十七篇 读取文件存储设备的属性

阅读更多
如果将电脑看作文件存储的容器,那么有很多类型的文件存储,例如:分区、硬盘、卷标,等等。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/
0
0
分享到:
评论

相关推荐

    Java IO, NIO and NIO.2(Apress,2015)

    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

    java NIO.zip

    JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现

    下面小编就为大家分享一篇JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现,具有很好的参考价值,希望对大家有所帮助

    Java IO, NIO and NIO.2 原版pdf by Friesen

    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 ...

    JAVA NIO 按行读取大文件支持 GB级别-修正版

    本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件结束 ...

    JAVA NIO 按行读取大文件,支持 GB级别

    本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取字节到 fbb中 然后对fbb自己中的内容进行行判断即 10 回车 13 行号 0 文件...

    NIO(byteBuffer)按行读取文件

    使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com

    Java IO, NIO and NIO.2

    这是一本介绍java io以及nio相关知识的书,书中对知识的讲解通俗易懂,是学习java nio以及复习java io相关知识的必备书籍。注意:本书为英文版!!!

    java nio.pdf

    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 超大数据文件 超大数据...

    Java NIO.pdf

    Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf

    蔚来-NIO.US-新车上市,蔚来可期.pdf

    蔚来-NIO.US-新车上市,蔚来可期.pdf

    Apress.Pro.Java.7.NIO.2.2011

    Apress.Pro.Java.7.NIO.2.2011

    Pro Java 7 NIO.2

    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 中英文版 + Pro Java 7 NIO.2

    Java NIO,Ron Hitchens 著,中文版 裴小星 译,Pro Java 7 NIO.2,Anghel Leonard 著,pdf文字版带书签,无安全限制

    ProJava7NIO.2PDFBooks.pdf 英文原版

    Pro Java 7 NIO.2 – PDF Books

    优雅的操作文件:java.nio.file 库介绍.pdf

    在早期的 Java 版本中,文件 IO 操作功能一直相对较弱,主要存在以下问题: 缺乏对现代文件系统的支持:只提供的基础的文件操作,不支持很多现代的文件系统 API 不够直观:文件操作的 API 设计相对较为复杂和冗长,...

    Pro Java 7 NIO.2.pdf

    Pro Java 7 NIO.2.pdf,2011 by Anghel Leonard

    Java用NIO读取文件示范

    简单的用Java的NIO读取文件的程序,给大家参考。

Global site tag (gtag.js) - Google Analytics