/**
* 下载文件接口
*
* @param remote 远程服务上文件地�?
* @param local 本地文件�?
* @param encoding 流传输过程中的编码格�?
*/
public void retrieve(String remote, String local, String validate)
{
login();
try
{
String serverpath = remote;
String localpath = local;
serverpath = gbkToIso8859(serverpath);
// 设置为二进制
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
downLoadFile(ftp, serverpath, localpath, validate);
// �?��ftp
ftp.logout();
}
catch (IOException e)
{
e.printStackTrace();
}
disconnect();
}
/**
* 递归下载文件
*
* @param ftp
* @param remote
* @param local
* @param validate
*/
private void downLoadFile(FTPClient ftp, String remote, String local, String validate)
{
try
{
// 转到指定下载目录
ftp.changeWorkingDirectory(remote);
FTPFile[] files = ftp.listFiles();
for (FTPFile file : files)
{
if (file.isDirectory())
{
downLoadFile(ftp, remote + file.getName() + "/", local + "/" + file.getName() + "/",
validate);
}
else
{
local = iso8859ToGbk(local);
File localFile = new File(local + "/" + iso8859ToGbk(file.getName()));
if (!localFile.getParentFile().exists())
{
localFile.getParentFile().mkdirs();
}
if (file.getName().endsWith(validate))
{
// 输出�?
OutputStream is = new FileOutputStream(localFile);
// 下载文件
ftp.retrieveFile(file.getName(), is);
is.close();
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}ftp Client递归下载ftp上某个文件夹的文件
最新推荐文章于 2021-11-17 16:40:33 发布
本文介绍了一个基于Java的FTP文件下载实现方法,通过递归下载文件夹内的所有文件,并支持特定文件类型的过滤。文章详细展示了如何连接FTP服务器、设置编码及文件类型、切换工作目录以及下载文件的具体步骤。
2690

被折叠的 条评论
为什么被折叠?



