我有一个java代码,我将使用它从远程计算机的目录下载文件。现在使用可用的ftp类来执行相同的操作。当我运行导致所有结果的代码时,就会出现问题正在下载的文件,但当我看到所有文件的大小时,我发现所有文件都是零字节并且也不包含任何内容。如果您可以分析这背后可能的原因,请帮忙分析一下?
package login.multiple;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.*;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class Downloader {
/**
* @param args
* @throws FTPException
* @throws FTPIllegalReplyException
* @throws IOException
* @throws IllegalStateException
* @throws FTPListParseException
* @throws FTPAbortedException
* @throws FTPDataTransferException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FTPFile[] list = null;
String fileNames[];
String path = "\\Users\\XXX\\Documents\\Downloads\\Coldplay - Mylo Xyloto [mp3-vbr-2011]";
int i = 0;
FileOutputStream fos = null;
FTPClient client = new FTPClient();
//client.connect("192.168.1.2");
try {
client.connect("127.0.0.1");
client.login("xxx", "yyy");
list = client.listFiles(path);
for(i=0;i<list.length;i++){
//for(i=0;i<1;i++){
fos = new FileOutputStream(list[i].getName());
client.retrieveFile(path + list[i].getName(), fos);
}
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
client.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最佳答案
自从您打开 FileOutputStream
,很有可能您也有责任关闭它。添加fos.close()
之后client.retrieveFile
。你的 try-catch 设计也很困惑。如果正确的话,它将有助于诊断。将所有内容放在之后 client.connect
进入try {...} finally { client.disconnect(); }
并声明您的main
方法为throws Exception
。这会给你带来快速失败的行为。
关于java - 使用java代码将目录的多媒体文件下载到我的本地机器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10162888/