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

如何在Java中以共享模式打开文件,java,file-io,Java,File Io,如何在Java中以共享模式打开文件,以允许其他用户读取和修改该文件 谢谢我不完全确定我知道你的意思,但是如果你是指同时修改文件,那就不是一个简单的过程。事实上,这很复杂,没有简单的方法可以做到,在我的脑海里,你必须: 决定当其他人修改文件时,是否为每个用户刷新该文件,丢失所有更改,或者在这种情况下如何处理 如有必要,处理差异和合并 处理并发写入同一文件的同步,以便当两个用户想要写入该文件时,内容不会以杂乱无章的方式结束,例如,如果一个用户想要写入“foo”,另一个用户想要写入“bar”,则在没

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


谢谢

我不完全确定我知道你的意思,但是如果你是指同时修改文件,那就不是一个简单的过程。事实上,这很复杂,没有简单的方法可以做到,在我的脑海里,你必须:

  • 决定当其他人修改文件时,是否为每个用户刷新该文件,丢失所有更改,或者在这种情况下如何处理
  • 如有必要,处理差异和合并
  • 处理并发写入同一文件的同步,以便当两个用户想要写入该文件时,内容不会以杂乱无章的方式结束,例如,如果一个用户想要写入“foo”,另一个用户想要写入“bar”,则在没有同步的情况下,内容可能会以“fbaroo”结束

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

如果您想了解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>"));
    }
File文件=新文件(“”);
try(InputStream in=Files.newInputStream(file.toPath(),StandardOpenOption.READ)){
System.out.println(file.renameTo(新文件(“”));
}
将打印
true
,因为在共享读取模式下打开的文件可能会被移动


有关更多详细信息,请参阅。

此处Java不是独立于平台的,因为平台的行为不同。在Linux上,如果打开文件,它不会被锁定,而我的经验是,它在Windows上被锁定。我不知道Solaris和BSD的情况。