【发布时间】:2023-03-25 23:13:01
【问题描述】:
所以我有这个 FTP 服务器,里面有一堆文件夹和文件。
我的程序需要访问这个服务器,读取所有文件,并显示它们的数据。
出于开发目的,我一直在处理我硬盘上的文件,就在“src”文件夹中。
但是现在服务器已经启动并运行,我需要将软件连接到它。
基本上我想要做的是获取服务器上特定文件夹中的文件列表。
这是我目前所拥有的:
URL url = null;
File folder = null;
try {
url = new URL ("ftp://username:password@www.superland.example/server");
folder = new File (url.toURI());
} catch (Exception e) {
e.printStackTrace();
}
data = Arrays.asList(folder.listFiles(new FileFilter () {
public boolean accept(File file) {
return file.isDirectory();
}
}));
但我收到错误消息“URI 方案不是‘文件’。”
我明白这是因为我的网址以“ftp://”而不是“file:”开头
但是我似乎无法弄清楚我应该怎么做!
也许有更好的方法来解决这个问题?
【问题讨论】:
-
而且这个问题已经被问过很多次了;也许其他答案之一会对您有所帮助:stackoverflow.com/…
-
你想乐于助人还是愤世嫉俗?我希望。问题是我需要一个文件列表。我不知道有什么其他方法可以解决这个问题。
-
不确定是否可以使用 URL。您可能想查看专用的 FTP 库,例如 Apache Net Commons 或 edtFTP4j
-
我尝试使用 edtFTPj/Free,但是当我到达
FTPFile [] files = ftp.directoryList();时,它冻结了一分钟左右,并说“读取超时”。我想我可能应该开始一个线程,而不是。 -
@RichYoung 你必须小心,因为一些 ftp 服务器不允许目录列表。这取决于平台(IBM、Sun、Windows)及其配置方式。由于没有真正的标准方式来输出目录列表,ftp 客户端依赖于解析器,即使这样,它们也会对它们正在与哪个平台进行有根据的猜测。我主要使用 Net Commons(commons net?),因为它很容易启动和运行,但主要是因为它们支持 FTPS。