java - 如何在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
我要锁定文件的目的是:
我想访问它,读取其中包含的数据,更新(通过写入文件)附加数据,然后关闭它。
帮助我可以做些什么来锁定网络文件。
解决方案
推荐阅读
- python - 从烧瓶项目的父目录导入.py文件
- elixir - 处理phoenix中已经存在的表之间的多对多关系
- javascript - babel-plugin-root-import 与 babel 7
- java - 组合与继承——这对单元测试有何帮助?
- javascript - 使用没有 SVG 的 SVG 路径
- linux - linux中“shutdown”、“ftp”用户的目的?
- android - NoSuchMethodError:没有静态方法 combineMeasuredStates 与底部导航视图
- selenium - 与 Selenium 并行运行顺序和并行测试
- json - IntelliJIdea:代码片段上的红线出现错误“无法访问 org.codehaus.jackson.ObjectCodec”
- makefile - 如何添加基于模式的依赖