VC++ MFC 创建多级目录的方法 MakeSureDirectoryPathExists (另附 文件、目录操作类)

来源:互联网 发布:数据展示平台网页 编辑:程序博客网 时间:2024/05/21 08:20

VC++ MFC  创建多级目录的方法 MakeSureDirectoryPathExists (另附  

文件、目录操作类)

转载
此函数需要包含:imagehlp.h文件imagehlp.lib文件
方法一:
void CDirXXXDlg::OnXXX() 
{
// TODO: Add your control notification handler code here
char szDir[MAX_PATH] = _T("D:\\DirRoot\\Dir1\\Dir2\");
BOOL bRet = MakeSureDirectoryPathExists(szDir);
}

方法二:
// 判断目录是否存在   
BOOL FolderExists(CString s)   
{   
    DWORD attr;    
    attr = GetFileAttributes(s);    
    return (attr != (DWORD)(-1) ) &&   
        ( attr & FILE_ATTRIBUTE_DIRECTORY);    

BOOL CreateMuliteDirectory(CString P)   
{   
    int len=P.GetLength();   
    if ( len <2 ) return false;    
    if('\\'==P[len-1])  
    {  
        P=P.Left(len-1);  
        len=P.GetLength();  
    }  
    if ( len <=0 ) return false;  
    if (len <=3)   
    {  
        if (FolderExists(P))return true;  
        else return false;   
    }  
    if (FolderExists(P))return true;  
    CString Parent;  
    Parent=P.Left(P.ReverseFind('\\') );   
    if(Parent.GetLength()<=0)return false;    
    BOOL Ret=CreateMuliteDirectory(Parent);    
    if(Ret)    
    {   
        SECURITY_ATTRIBUTES sa;   
        sa.nLength=sizeof(SECURITY_ATTRIBUTES);   
        sa.lpSecurityDescriptor=NULL;   
        sa.bInheritHandle=0;   
        Ret=(CreateDirectory(P,&sa)==TRUE);   
        return Ret;   
    }   
    else  
return FALSE;   
}

调用
void CDirXXXDlg::OnXXX() 
{
// TODO: Add your control notification handler code here
char szDir[MAX_PATH] = _T("D:\\DirRoot\\Dir1\\Dir2");
BOOL bRet = CreateMuliteDirectory(szDir);
}

以下给出转自CodeProject的CDiskObject类的操作方法:

Files

  • BOOL FileExists( CString file )

    Returns TRUE if the file 'file' exists.

  • BOOL CreateFile( CString file )

    Creates the empty file 'file'. If 'file' contains a non-existing subdirectory, it will be created.

  • BOOL CopyFile( CString sourceFile, CString destDirectory )

    Copies 'sourceFile' to 'destDirectory'. 'destDirectory' will be created if it doesn't exist.

  • BOOL CopyFiles( CString sourceDirectory, CString destDirectory)

    Copies all files from 'sourceDirectory' to 'destDirectory'. Subdirectories are not copied (useCopyDirectory, described below, for this). 'destDirectory' will be created if it doesn't exist.

  • BOOL CopyFiles( CStringArray& files, CString destDirectory)

    Copies the files in 'files' to 'destDirectory'. Either the filenames in 'files' must be fully qualified or will be copied from the current directory. 'destDirectory' will be created if it doesn't exist.

Directories

  • BOOL CreateDirectory( CString directory )

    Creates 'directory'. Subdirectories will also be created.

  • BOOL CopyDirectory( CString sourceDirectory, CString destDirectory)

    Copies the contents from 'sourceDirectory' to 'destDirectory'. Subdirectories will not be copied.

  • BOOL EmptyDirectory( CString directory )

    Deletes all files from 'directory'. Subdirectories will not be emptied.

  • BOOL RemoveDirectory( CString directory )

    Remove 'directory' even if it is not empty. Will not remove subdirectories.

  • BOOL CopyDirectories( CString sourceDirectory, CString destDirectory)

    Copies the contents from 'sourceDirectory' to 'destDirectory'. Subdirectories will also be copied.

  • BOOL EmptyDirectories( CString directory )

    Deletes all files from 'directory'. Subdirectories will also be emptied.

  • BOOL RemoveDirectories( CString directory )

    Removes 'directory' even if it is not empty. Will also remove subdirectories.

Enumerations

  • BOOL EnumDirectories( CString sourceDirectory, CStringArray& directories )

    Returns a list of all subdirectories in 'sourceDirectory' in 'directories'. Subdirectories will not be enumerated.

  • BOOL EnumFilesInDirectoryWithFilter( CString filter, CString sourceDirectory, CStringArray& files, int mode = EF_ONLY_FILENAMES)

    Returns a list of all files in 'sourceDirectory' matching the filter in 'filter' in 'files'. If mode isEF_ONLY_FILENAMES (default), only the filenames will be returned. If mode is EF_FULLY_QUALIFIED, the filenames will contain the complete path. Subdirectories will not be searched.

  • BOOL EnumFilesInDirectory( CString sourceDirectory, CStringArray& files, int mode = EF_ONLY_FILENAMES )

    Returns a list of all files in 'sourceDirectory' in 'files'. If mode is EF_ONLY_FILENAMES (default), only the filenames will be returned. If mode is EF_FULLY_QUALIFIED, the filenames will contain the complete path.

  • BOOL EnumAllFiles( CString sourceDirectory, CStringArray& files )

    Returns a list of all files in 'sourceDirectory' in 'files'. The filenames will contain the complete path. Subdirectories will also be searched.

  • BOOL EnumAllFilesWithFilter( CString filter, CString sourceDirectory, CStringArray& files )

    Returns a list of all files in 'sourceDirectory' in 'files' matching 'filter'. The filenames will contain the complete path. Subdirectories will also be searched.

Error handling

  • CString GetErrorMessage()

CDiskObject: Simplifying common disk operations

原创粉丝点击