Ich versuche, eine Datei auf einem Remote-FTP-Host zu setzen. Dies ist, wie ich in der Regel tun:Konnte nicht in Arbeitsverzeichnis "/" beim Aufrufen von FileSystemManager.resolveFile mit FTP wechseln URL
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
Mein ftUri
ist:
ftp://[username]:{[hash_password]}@[hostname]:21/users/afolder/anotherfolder/afile.pdf
Aber ich erhalte die folgende Ausnahme:
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
Ist es möglich, ein Arbeitsverzeichnis Pfad zu setzen ?
Meine Vermutung ist, dass die FTP-Bibliothek versucht, auf dem Verzeichnis root
arbeiten, die ich keine Erlaubnis habe; Allerdings informiere ich über den URI einen anderen Pfad, aber irgendwie besteht die Bibliothek darauf, im Verzeichnis root
zu arbeiten.
Ich konnte diese Methode, die Sie beziehen, nicht finden. https://commons.apache.org/proper/commons-vfs/apidocs/org/apache/commons/vfs2/FileSystemManager.html –
Siehe meine aktualisierte Antwort. –