gpt4 book ai didi

java - 使用 FTP URL 调用 FileSystemManager.resolveFile 时无法更改到工作目录 "/"

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:27 24 4
gpt4 key购买 nike

我正在尝试将文件放入远程 FTP 主机。我通常是这样做的:

String ftpUri =
"ftp://" + target.get(server).get("Username") + ":{" + target.get(server).get("Psswd") + "}@";
if (StringUtils.isBlank(target.get(server).get("Port"))) {
ftpUri += target.get(server).get("Hostname") + target.get(server).get("RemotePath");
} else {
ftpUri += target.get(server).get("Hostname") + ":" + target.get(server).get("Port") + target.get(server)
.get("RemotePath");
}

System.out.println("ftpUri = " + ftpUri);
FileSystemManager fsManager;
try {
fsManager = VFS.getManager();
} catch (FileSystemException e) {
throw new RuntimeException("Failed to get fsManager from VFS", e);
}

FileSystemOptions opts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setPassiveMode(opts, true);

FileObject remoteFile = fsManager.resolveFile(ftpUri, opts); // <- it breaks

我的ftUri是:

ftp://[username]:{[hash_password]}@[hostname]:21/users/afolder/anotherfolder/afile.pdf

但我遇到以下异常:

Caused by: org.apache.commons.vfs2.FileSystemException: Could not change to work directory "/".
at org.apache.commons.vfs2.provider.ftp.FtpClientFactory.createConnection(FtpClientFactory.java:130)
... 19 more

是否可以设置工作目录路径?

我的猜测是 FTP 库正在尝试在 root 目录上工作,而我没有任何权限;但是,我通过 URI 通知另一个路径,但不知何故,该库坚持在 root 目录中工作。

最佳答案

使用.resolveFile overload that takes the baseFile parameter :

public FileObject resolveFile(FileObject baseFile, String uri,
FileSystemOptions fileSystemOptions)

此重载不在 FileSystemManager 中界面。但它是在默认实现中, DefaultFileSystemManager 。因此,您必须将 fsManager 转换为 DefaultFileSystemManager

关于java - 使用 FTP URL 调用 FileSystemManager.resolveFile 时无法更改到工作目录 "/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com