【问题标题】:How can the block size of a file store be portably obtained in Java 7?如何在 Java 7 中可移植地获取文件存储的块大小?
【发布时间】:2011-04-22 23:22:36
【问题描述】:

我查看了java.nio.file.attribute.Attributesjava.nio.file.FileStore,但找不到发现磁盘文件块大小的方法。

【问题讨论】:

  • 块大小本质上不是不可移植的吗?如果文件存储不使用块(肯定不太可能,但可能)怎么办?
  • @Mark 绝大多数文件存储都是通过旋转磁盘实现的,因此使用块。我可以处理块大小为一个字节的情况。我想要的是一种确定大小的便携式方法。

标签: java file filesystems block disk


【解决方案1】:

这是关于缓冲区大小与 I/O 吞吐量的article。概要:nio 为您处理所有这些。 SO post 得出结论,您应该使用 2 的幂。

【讨论】:

  • Devon,我想要一种以编程方式确定块大小的方法,它不依赖于进行实验和解释结果。
  • 我明白这一点。但是,Java 中没有公开字段系统首选 IO 大小的机制。鉴于此,最好的后备位置是使用可能的倍数并相信 io/nio 子系统会做正确的事情。一般来说,文件系统使用 4K、8K 或 16K 的 I/O 大小。因此,使用其中一种尺寸通常就足够了。
【解决方案2】:

Java 7 没有要求的信息,用户的问题与 Java 7 有关。

但在 Java 10 中,引入了一种新方法来提供请求的信息。

FileStore 类的getBlockSize() 方法用于返回此文件存储对象中每个块的字节数。每个文件存储都组织成离散的字节序列,称为块,块是文件存储的最小存储单元。每个读写操作都在多个块上执行。该方法有助于获取Block的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多