- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Java 7 defines this option ,但我不明白它的用处。考虑这个简单的程序,它在一台足够新的 Linux 机器上运行,带有 Java 6 JVM:
public static void main(final String... args)
throws IOException
{
final long offset = 1L << 31;
final RandomAccessFile f = new RandomAccessFile("/tmp/foo", "rw");
f.seek(offset);
f.writeInt(2);
f.close();
}
当我“明智地”查询文件时,我得到了预期的结果:
$ cd /tmp
$ stat --format %s foo
2147483652
$ du --block-size=1 foo
4096 foo
也就是说,inode 如实声明该文件的大小接近 2 GB,但它的磁盘使用量实际上是单个 block ,因为底层 fs 的 block 大小为 4k。好。
但我不需要 Java 7 的 StandardOpenOption.SPARSE
。事实上,如果我使用 Java 7 JVM 运行这段完全相同的代码,结果并没有什么不同。
现在,介绍一些仅适用于 Java 7 的代码:
public static void main(final String... args)
throws IOException
{
final ByteBuffer buf = ByteBuffer.allocate(4).putInt(2);
buf.rewind();
final OpenOption[] options = {
StandardOpenOption.WRITE,
StandardOpenOption.CREATE_NEW
};
final Path path = Paths.get("/tmp/foo");
Files.deleteIfExists(path);
try (
final SeekableByteChannel channel
= Files.newByteChannel(path, options);
) {
channel.position(1L << 31);
channel.write(buf);
}
}
这还创建了一个稀疏文件,我根本不需要指定StandardOpenOption.SPARSE
。
那么,它有什么用呢?是否存在此选项实际影响行为的操作系统/文件系统组合?
最佳答案
Oracle 在 I/O tutorial 中的注释将 NTFS 列为该选项很重要的一个文件系统。微软关于 sparse file support in NTFS 的文档表示稀疏文件必须明确标记为稀疏文件,并列出了特定于稀疏文件的操作(将区域清零、搜索具有非零数据的范围等)。
我手头没有 Windows 机器来尝试这个,但看到教程特别提到 NTFS,这可能是一个集中搜索的地方。
关于java - StandardOpenOption.SPARSE 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17634362/
StandardOpenOption.SYNC 之间有什么区别?和 StandardOpenOption.DSYNC ? DSYNC 会导致什么样的数据丢失? DSYNC 适用于哪些用例?如果您已经决
可能是一个简单的答案,但我已经尝试阅读有关 StandardOpenOption 的 javadoc 文档,但我仍然不清楚当我说时会发生什么 Files.write(..., ..., Standar
Enum StandardOpenOption有 9 个枚举常量:APPEND、CREATE、CREATE_NEW、DELETE_ON_CLOSE、DSYNC、READ、SPARSE、SYNC、TRU
这个问题在这里已经有了答案: What does the "static" modifier after "import" mean? (8 个答案) 关闭 5 年前。 我有这个简单的 java 代
Java 7 defines this option ,但我不明白它的用处。考虑这个简单的程序,它在一台足够新的 Linux 机器上运行,带有 Java 6 JVM: public static vo
来自this oracle java教程: The OpenOptions Parameter Several of the methods in this section take an optio
这是我的代码: import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SeekableByt
我正在尝试打开文件进行读取或创建文件(如果文件不存在)。我使用这段代码: String location = "/test1/test2/test3/"; new File(location).mkd
StandardOpenOption.SYNC 是否与 MappedByteBuffers 一起工作并节省我们调用 MappedByteBuffer.force() 的时间? Set options
我是一名优秀的程序员,十分优秀!