/**
* 下载文件接口
*
* @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上某个文件夹的文件
最新推荐文章于 2022-12-20 09:56:04 发布