gpt4 book ai didi

java - 在java中使用FTP程序

转载 作者:行者123 更新时间:2023-12-01 04:32:43 26 4
gpt4 key购买 nike

我一直在使用一个教程来列出来自 FTP 服务器的目录 from here但它给出了异常 java.net.SocketException: Software Caused Connection abort: socket write error还附上了图像enter image description here我使用 ftp4j 库和示例代码,也遇到了一些错误,有人能告诉我原因吗,因为我看不到这背后的任何原因,可能我必须为 JVM 启用一些安全限制? (只是一个想法)温柔地谢谢你

最佳答案

假设您尝试使用任何 FTP 客户端(例如 FileZilla)连接到此 FTP 服务器,以下是基于 Apache Commons FTP 列出文件和目录的代码(定义 SERVER_NAME、USER_NAME 和 PASSWORD)。

        FTPClient ftp = new FTPClient();
DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

FTPClientConfig config = new FTPClientConfig();
//optional - set timezone of the server
config.setServerTimeZoneId("America/New_York");

ftp.configure(config );

try {

int reply;

ftp.connect(SERVER_NAME);
ftp.login(USER_NAME, PASSWORD);
System.out.println("Connected to " + SERVER_NAME + ".");
System.out.println(ftp.getReplyString());

//After connection attempt, check the reply code to verify success.
reply = ftp.getReplyCode();

if(!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.out.println("Failed to connect to FTP server");
System.exit(1);
}

//use binary mode
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//use passive mode for firewalls
ftp.enterLocalPassiveMode();

FTPListParseEngine engine = ftp.initiateListParsing(".");

while (engine.hasNext()) {
FTPFile[] files = engine.getNext(25);
for (FTPFile file : files) {
String details = file.getName();
if (file.isDirectory()) {
details = "[" + details + "]";
}
details += "\t\t" + file.getSize();
details += "\t\t" + dateFormater.format(file.getTimestamp().getTime());
System.out.println(details);
}

}

ftp.logout();

} catch(IOException e) {
e.printStackTrace();
} finally {
if(ftp.isConnected()) {
try {
ftp.disconnect();
} catch(IOException ioe) {
// do nothing
}
}
}

教程中未处理的一些要点:

  1. 应对防火墙的被动模式
  2. FTP 文件分页
  3. 检查回复代码

关于java - 在java中使用FTP程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802188/

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