首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用smbj重命名SMB上的文件失败

使用smbj重命名SMB上的文件失败
EN

Stack Overflow用户
提问于 2021-09-27 11:49:12
回答 1查看 384关注 0票数 0

我正在努力使用com.hierynomus.smbj将内容重命名为SMB的文件。文件是用内容生成的,但是在重命名内容之后就没有了。

以下实现重命名文件:

代码语言:javascript
复制
    public void rename(String pathFrom, String pathTo) {
        pathFrom = formatPath(pathFrom);
        pathTo = formatPath(pathTo);
        Set<SMB2ShareAccess> shareAccessSet = new HashSet<>();
        shareAccessSet.add(SMB2ShareAccess.FILE_SHARE_READ);
        shareAccessSet.add(SMB2ShareAccess.FILE_SHARE_WRITE);
        shareAccessSet.add(SMB2ShareAccess.FILE_SHARE_DELETE);

        Set<FileAttributes> fileAttributes = new HashSet<>();
        fileAttributes.add(FileAttributes.FILE_ATTRIBUTE_NORMAL);
        Set<SMB2CreateOptions> createOptions = new HashSet<>();
        SMB2CreateDisposition smb2CreateDisposition = SMB2CreateDisposition.FILE_OVERWRITE_IF;

        if (isFolder(pathFrom)) {
            createOptions.add(SMB2CreateOptions.FILE_DIRECTORY_FILE);
            smb2CreateDisposition = SMB2CreateDisposition.FILE_OPEN_IF;
        }
        else if (isFile(pathFrom)) {
            createOptions.add(SMB2CreateOptions.FILE_NON_DIRECTORY_FILE);
        }
        else {
            throw new IllegalArgumentException("Path '" + pathFrom + "' can't be resolved to file nor directory");
        }
        try (DiskEntry file = this.smbShare.open(pathFrom, of(AccessMask.MAXIMUM_ALLOWED), fileAttributes, shareAccessSet,
                smb2CreateDisposition, createOptions)) {
            file.rename(pathTo, true);
        }
    }

也许我搞砸了smbShare.open-function中的属性和选项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 13:35:30

嗯..。我搞砸了SMB2CreateDisposition的属性。

解决方案:smb2CreateDisposition = SMB2CreateDisposition.FILE_OPEN_IF;而不是smb2CreateDisposition = SMB2CreateDisposition.FILE_OVERWRITE_IF;

前者打开(1.)或创建(2.)有问题的文件。后者覆盖现有文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69346062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档