在Java中连接远程路径

3

我正在使用Apache提供的FTP库(commons-net)。我想要检查FTP服务器上是否存在一个文件,所以我使用了FTPClientlistFiles方法:

ftpClient.listFiles(remoteFileDir + "\\" + fileName);

当前目录是FTP服务器的根目录。因此,remoteFileDir的值是相对于该根目录的路径。

我的问题与远程目录路径和文件名合并有关。正确的方法是什么?对于本地文件,我会这样做:

File file = new File(remoteFileDir,fileName);

但是在这里它不起作用,因为当我调用file.getAbsolutePath()时,我得到的是本地当前目录中文件的绝对路径,这不是我想要的。同时,我猜合并已经根据我的本地环境完成了。
PS:我看了远程机器上如何确定路径?,但它对我没有帮助。
谢谢。

你究竟要解决的是什么问题?使用文件对象来表示除本地文件以外的任何内容绝对是不可取的。但如果使用 \ 或 changeWorkDir 方法可以解决问题,又何必大费周折呢? - LordDoskias
@LordDoskias 在我的情况下使用 \ 是有效的,那么其他FTP服务器呢?它还能正常工作吗?关于 changeWorkingDirectory 方法,我刚刚发现了它,但我想听听其他开发人员的想法,也许现在我没有看到的问题。 - manash
3
建议您使用单个正斜杠“/” 。 - LordDoskias
1个回答

1
我发现了FTPClient的changeWorkingDirectory方法。
ftpClient.changeWorkingDirectory(remoteFileDir);
FTPFile[] names = ftpClient.listFiles(fileName);

在这种情况下,我不必指定分隔符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接