如何在Java中以共享模式打开文件

7
如何在Java中以共享模式打开文件,以允许其他用户读取和修改文件?
谢谢。

在这里,Java不是平台无关的,因为平台的行为不同。在Linux上,如果你打开一个文件,它不会被锁定,而我发现在Windows上它是被锁定的。我不知道Solaris和BSD的情况。 - user unknown
2个回答

4

如果您询问的是Windows平台,在该平台上,文件被锁定在文件系统级别。下面是使用Java NIO实现的方法:

    Files.newInputStream(path, StandardOpenOption.READ)

以下是实际操作演示:

    File file = new File("<some existing file>");
    try (InputStream in = Files.newInputStream(file.toPath(), StandardOpenOption.READ)) {
        System.out.println(file.renameTo(new File("<some other name>"));
    }

将打印true,因为以共享读模式打开的文件可以移动。

更多细节请参考java.nio.file.StandardOpenOption


1

我不太确定你的意思,但如果你是指文件的并发修改,那不是一个简单的过程。实际上,这是相当复杂的,没有简单的方法可以做到,从我的经验来看,你需要:

  • 决定当其他人修改文件时,文件是否为每个用户刷新,丢失所有更改或在这种情况下要做什么;
  • 如果必要,处理差异和合并;
  • 处理同步以便同时写入同一文件时,内容不会变得混乱,例如,如果一个用户想要写入“foo”,另一个用户想要写入“bar”,则在没有同步的情况下,内容可能最终变成“fbaroo”。

如果你只想以只读模式打开文件,你只需要通过FileInputStream或类似的对象打开它,这个对象只允许读取操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接