在 Java 中获取系统块大小

我正在尝试编写最快,最优化的文件保存方法。有没有办法在java中获取系统块大小?类似的东西或什么。System.getProperty("block.size")


答案 1

“最快最优化的方法”肯定是使用您可以负担得起的最大缓冲区进行写入;以确保其大小是2的幂(想到一兆字节);并确保写入操作本身是缓冲区对齐的:

new BufferedOutputStream(new FileOutputStream(file), 1024*1024);

只要您超过系统块大小(您将处于此大小),并保持与之对齐,这是由 保证的,这与它所得到的一样最佳。BufferedOutputStream

您还应该研究 ,注意您必须在循环中调用它,并且到目前为止的实际实现似乎不使用任何低级操作系统基元(与广告相反),就像您可以自己编写的循环一样。FileChannel.transferTo()


答案 2

我不认为有java函数可以做到这一点。但是,有一种依赖于系统的方法可以检索该信息。看看这个答案。您需要使用 Runtime.exec() 并解析数据。


推荐