首页 > 解决方案 > 如何在java中将SmbFile锁定给其他用户

问题描述

我在网络中有文件,我想在读取和更新文件时锁定它。为了读/写我使用 smb 协议的文件。这是我的代码:

SmbFile smbFile = new SmbFile(url, auth, SmbFile.FILE_NO_SHARE)

实际上我意识到这样会有问题,方向 SmbFileOutputStream 不遵循共享语义并且可能没有任何一致性保证。

所以我试图以这种方式归档:

File networkFile = new File("\\network-name\" + filePath);
FileChannel fc = FileChannel.open(Paths.gets(networkFile.getPath()), StandardOpenOption.WRITE, 
StandardOpenOption.READ);
FileLock lock = channel.lock(0L, Long.MAX_VALUE, true);
fc.write(ByteBuffer.wrap("my updates").getBytes()));
fc.close();

当我运行它时,我得到了这个异常:

java.nio.file.AccessDeniedException: \\network-name\directory\directory\file.txt

我要锁定文件的目的是:

我想访问它,读取其中包含的数据,更新(通过写入文件)附加数据,然后关闭它。

帮助我可以做些什么来锁定网络文件。

标签: javanetworkingiosmb

解决方案


推荐阅读