【发布时间】:2016-12-19 13:21:34
【问题描述】:
即使我在 Java 程序中锁定了一个文件
try (FileChannel channel = FileChannel.open(fileName, StandardOpenOption.READ);
FileLock lock = channel.lock(0, Long.MAX_VALUE, false)) {
// ... <-- Program waits here
}
我可以在这样的 C 程序中以写入权限打开此文件
FILE *file = fopen(filename, "wb");
assert(file != NULL);
令人惊讶的是,这些行通过了,文件将被打开,并且由于它存在,它将被愉快地截断为大小为零。
但是我不允许实际向其写入内容:
assert(fwrite("foo", 1, 3, file) == 3);
assert(fflush(file) == 0);
我怎么敢!
问题:为什么实际上禁止将内容写入文件但允许将其截断为零大小?这样的文件锁的目的是什么?
【问题讨论】:
标签: java windows file-locking