MFC实现指定文件夹或文件的下载

/************************************************************************/
/*FTP下载指定的文件夹或文件
参数说明:
 FtpPath   要下载的ftp 目录或文件
 localPath    保存到本地的目录
 ftpAddress   ftp地址
 ftpSuser   登陆ftp的用户名
 ftpPass       登陆ftp的密码
 sErr          发生错误时,返回的错误信息*/

/************************************************************************/
BOOL GetFileFromFTP( CString FtpPath, CString LocalPath ,CString ftpAddress, CString ftpUser, CString ftpPass, CString &sErr )
{
	CString sTemp ;
	CString sLocalTemp ;
	CString sTempFtpPath ;
	CInternetSession  pInternetCon(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);
	CFtpConnection *pFtpCon ;
	try
	{
		pFtpCon =pInternetCon.GetFtpConnection( ftpAddress, ftpUser, ftpPass, 21 );
		if ( pFtpCon != NULL)
		{
			CFtpFileFind FtpFinder( pFtpCon ) ;
			BOOL bWork = FtpFinder.FindFile( FtpPath );
			while ( bWork )
			{
				bWork = FtpFinder.FindNextFile() ;
				if ( FtpFinder.IsDots() )
					continue;
				if(FtpFinder.IsDirectory() )
				{  //是目录
					sTemp.Empty() ;
					sTemp = FtpFinder.GetFileName() ;
					sTempFtpPath.Empty() ;
					sTempFtpPath = FtpPath;
					sTempFtpPath += sTemp;
					sTempFtpPath += "\\*.*" ;
					sLocalTemp.Empty() ;
					sLocalTemp = LocalPath + sTemp;

					CFileStatus   rStatus;
					if( !( CFile::GetStatus( sLocalTemp, rStatus ) ) )
					{//文件夹不存在, 创建之
						if( !(CreateDirectory((LPCTSTR)sLocalTemp, NULL)) )
						{//创建失败
							DWORD dErr = GetLastError() ;
							sErr.Format( _T("创建新目录失败: ERROR  %d") ,dErr ) ;
							return FALSE ;
						}
					}
					GetFileFromFTP( sTempFtpPath, sLocalTemp, ftpAddress, ftpUser, ftpPass, sErr ) ;
				}
				else
				{
					sTemp.Empty() ;
					sTemp = FtpFinder.GetFileName();
					sLocalTemp.Empty() ;
					sLocalTemp = LocalPath + "\\" + sTemp ;
					sTemp.Empty() ;
					sTemp = FtpFinder.GetFilePath();//
					CFileStatus   rStatus;
					if( !( CFile::GetStatus( sLocalTemp, rStatus ) ) )
					{//文件不存在,下载之
						if( !( pFtpCon->GetFile( sTemp, sLocalTemp, true, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1) ) )
						{//下载失败
							DWORD dErr = GetLastError() ;
							sErr.Format( _T("下载失败: ERROR  %d") ,dErr ) ;
							return FALSE ;
						}
					}
				}
			}
			FtpFinder.Close() ;
		}
	}
	catch (CInternetException * pEx)
	{
		TCHAR szError[1024];
		pEx->GetErrorMessage(szError,1024) ;
		sErr.Format( _T("连接FTP失败:%s"), pEx ) ;
		pEx->Delete();
		pFtpCon=NULL;
		return FALSE ;
	}
	return TRUE ;
}

  

时间: 2025-01-07 10:50:47

MFC实现指定文件夹或文件的下载的相关文章

使用IO流实现对特殊文件及文件夹中文件拷贝到指定文件中

本程序可以实现将自己指定的文件类型的文件拷贝到自己想放的文件中,比如一个文件夹中有很多文件,那么我们想把所有的TXT文件拷贝到自己指定的文件中.(靠背笔记) package com.blueZhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

JAVA之IO技术-获取指定目录下的文件夹和文件的File对象或是字符串名称。

package ioTest.io3; /* * 获取指定目录下的文件夹和文件的File对象或是字符串名称. * 也可以通过filter获取指定的文件夹或者指定类型的文件 * 这里面需要做一个总结,如何利用jdk的源码去理解不熟悉的方法的应用. */ import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; public class FileDemo2 { public static void m

Sublime Text 查找时排除指定的文件夹或文件

Sublime Text 查找时排除指定的文件夹或文件 Ctrl + Shift + F 这组快捷键可以调出 Sublime Text 的查找替换窗口,里边有一栏 Where,可以做一些高级设置: d:\dir\ , -*.css, -/*debug/* , -*.cache D:\Projects\ 表示在该目录下寻找,也可以写多个目录 *.cs 表示找 cs 后缀的文件,也可以写多个后缀 -/*Debug/* 表示排除 Debug 文件夹内的所有文件 -*.cache 表示排除 cache

FTP上传指定文件夹及其文件到服务器

1.在服务器端的IIS上建立一个FTP站点 注意事项:路径关联到你要存放(上传内容)的文件夹名称: 指定这个FTP站点的ip地址和端口号 2.本地准备代码 -------------------------------2.1上传类--------------------------------------------------------- public class Up    {        /// <summary>        ///   上传文件菜单        /// <

rm排除指定文件或指定文件夹下文件

3.方法3,当前文件夹中结合使用grep和xargs来处理文件名: ls | grep -v keep | xargs rm #删除keep文件之外的所有文件 说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件. 好处:使用了grep来正则表达式来匹

按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录

转载void CTestDlg::DeleteDirectory(CString strDir) { if(strDir.IsEmpty()) return; //首先删除文件及子文件夹 CFileFind ff; BOOL bFound = ff.FindFile(strDir+"\\*", 0); while(bFound) { bFound = ff.FindNextFile(); CString filename = ff.GetFileName(); if(filename=

IO流-获取指定目录下文件夹和文件对象【File类】

一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取指定目录下文件夹和文件对象 * Created by lcj on 2017/11/7. */ public class fileTest03 { public static void main(String[] args) { File dirr = new File("D:\\xuexizili

递归删除指定目录下面的所有文件夹和文件

/// <summary>/// 递归文件夹 删除文件夹下面的所有文件及目录/// </summary>/// <returns></returns>public ContentResult RecursionFolder(){ string path = Server.MapPath("/Content/Recursion"); if (System.IO.Directory.Exists(path)) { //方法一 //Delete

java打印出某一指定路径下的文件夹内的所有子文件夹和文件,并区分开来

public class printoutFile { public static void main(String[] args) { printFile(new File("D:\\test"),1); } public static void printFile(File file,int sub) { if (file.isFile()) { System.out.println("您给定的是一个文件"); // 判断给定目录是否是一个合法的目录,如果不是,