gpt4 book ai didi

java - 为什么java ftp上传到服务器的文件损坏了?

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:08 24 4
gpt4 key购买 nike

我正在尝试将文件(config.zip.zip 和 artikels.csv)从我的 Java 应用程序传输到 FTP 服务器,程序正常工作,文件已传输,但当我在文件夹中打开它时,文件已损坏,文件大小小于原始文件大小。 artikels.csv 文件的行数少于原始 artikels.csv,但 zip 文件无法完全打开。为什么?我该如何解决这个问题?

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public static void upload(List<String> files){
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect(ftpServer);
client.login(username, password);
client.setFileType(FTP.BINARY_FILE_TYPE);

for(String filename:files){
fis = new FileInputStream(filename);
boolean uploadOk = client.storeFile(FilenameUtils.getName(filename), fis);
System.out.println("Uploading status is: "+uploadOk);
}
client.completePendingCommand();
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}

最佳答案

这是您正在运行的确切代码吗?似乎怀疑 CompletePending Command() 和 logout() 位于文件迭代循环内。难道你不应该有类似下面的东西吗?

    ...

client.connect(ftpServer);
client.login(username, password);
client.setFileType(FTP.BINARY_FILE_TYPE);
for(String filename:files){
fis = new FileInputStream(filename);
String s = FilenameUtils.getName(filename);
System.out.println(s);
boolean uploadOk = client.storeFile(s, fis);
System.out.println("Uploading status is: "+uploadOk);
}
client.completePendingCommand();
client.logout();
...

关于java - 为什么java ftp上传到服务器的文件损坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517466/

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