Java连接FTP服务器并使用java默认库下载文件

标签 java ftp

我需要连接到 FTP 服务器并浏览所有文件,而不使用任何库(例如 apache.commons),因为我目前无法选择获取这些库。

我尝试使用简单的 URL 连接:

URL url = new URL("username:password@ip/folder/");
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

String line;

while ( (line = reader.readLine()) != null ) {
    System.out.println(line);
}

reader.close();

当我不包含 /folder/ 时,它可以工作,但它会打印出许多我什至在 FTP 服务器的主位置中看不到的内容,我不知道如果它给我文件或其他数据。

但是当我包含 /folder/ 时,我收到错误 CWD/folder/:550 无法更改目录

我无法更改目录的权限,它是只读的,这就是我所需要的。

这有什么问题吗?是否可以只使用 java 的默认库?

最佳答案

首先,您需要使用 FTP URL:

URL url = new URL("ftp:username:password@ip/folder/");

假设用户名密码被替换为正确的值。

其次,如果您可以通过 FTP 访问文件夹,它会向您提供某种格式的目录列表。如果不这样做,您需要研究收到的异常消息。如果您省略 /folder,它将为您提供该 用户名 的 FTP 服务器默认根目录的列表。代码 550 表示访问问题或目录不存在。

关于Java连接FTP服务器并使用java默认库下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196568/

相关文章:

html - HTTP 协议(protocol) : HTML only?

java - Android写入内部存储问题

ftp - WGET 仅获取 FTP 目录中的文件名

php - 由于 Laravel 项目的权限,覆盖文件失败

java - 将一个变量分配给另一个变量的速度

javascript - 如何通过 FTP 访问存储在 Firebase 托管上的 HTML 文件

ftp - 使用ncftp删除文件夹中所有文件和文件夹的命令

Java运行进程: view byte code at runtime of an arbitary process

java - 使泛型函数适用于多个非重叠类型

java - Elasticsearch Java API 创建带有映射的索引失败