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

[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
分享到:
评论

相关推荐

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

    JDK1.7 之 java.nio.file.Files 读取文件仅需一行代码实现 java.nio.file.Files 类是 JDK1.7 中引入的新的文件操作类,该类包含了许多有用的方法来操作文件。其中,Files.readAllBytes(Path) 方法可以将整个文件...

    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

    缓冲区是NIO中用于存储数据的容器,它们是固定大小的,并且具有特定类型的。Java NIO提供了诸如ByteBuffer、CharBuffer、IntBuffer等类型,对应于不同的数据类型。缓冲区具有读写位置,可以通过flip()、clear()和...

    Java IO, NIO and NIO.2

    NIO.2还包含了许多其他的API扩展和改进,例如对符号链接的支持、文件属性访问、文件树遍历、WatchService等。 以上介绍了Java中的三种I/O机制。在实际开发中,它们各有适用场景。例如,Java IO适合进行传统的I/O...

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO( Blocking I/O)相比,NIO具有更好的性能和更高的灵活性。NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。...

    NIO.2 入门,第 2 部分: 文件系统 API

    在Java的NIO.2(New IO 2.0)框架中,文件系统API提供了更加高效和灵活的方式来处理文件和目录。本篇我们将深入探讨NIO.2中的几个关键概念和类,包括`Files`, `Path`, `FileAttributes`, `DirectoryWatcher`以及`...

    Pro Java 7 NIO.2.pdf

    根据提供的文件信息,“Pro Java 7 NIO.2.pdf”由Anghel Leonard于2011年编写,主要介绍了Java 7中的新输入/输出(NIO)API,特别是NIO.2(JSR 203)所带来的增强功能。这本书通过一系列章节详细讲解了如何使用NIO.2...

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

    Java NIO 中英文版 + Pro Java 7 NIO.2

    `Pro Java 7 NIO.2`这本书由Anghel Leonard著,深入探讨了Java NIO.2 API,这是Java 7引入的进一步扩展,包括: 1. **文件系统API增强**:新增了AsynchronousFileChannel,支持异步文件操作,可以在后台线程中执行...

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。

    NIO(byteBuffer)按行读取文件

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

    Java I/O, NIO and NIO.2

    Java I/O, NIO, 和 NIO.2 是Java平台中处理输入/输出操作的核心组件,对于任何Java开发者来说,理解和掌握这些概念至关重要。本文将深入探讨这些技术,旨在提供一个全面而详尽的概述。 Java I/O(Input/Output)是...

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

    【java.nio.file库详解】 Java 早期版本的文件I/O操作功能相对有限,存在几个显著问题:不支持现代文件系统特性、API设计复杂且冗长、处理大文件和并发性能不足。为了解决这些问题,Java引入了`java.nio.file`库,...

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

Global site tag (gtag.js) - Google Analytics