8.6 如何复制文件

CopyFile函数

//复制文件,如果目标文件存在将不覆盖。
if (::CopyFile(strSourcePathName, strTargetPathName, TRUE))
{
    AfxMessageBox(_T("复制文件成功。"));
}
else
{
    AfxMessageBox(_T("复制文件失败。"));
}

 

8.7 如何移动文件

MoveFile函数

//移动文件
if (::MoveFile(strSourcePathName, strTargetPathName))
{
    AfxMessageBox(_T("移动文件成功。"));
}
else
{
    AfxMessageBox(_T("移动文件失败。"));
}

 

8.8 如何删除文件

DeleteFile函数

//删除文件
if(::DeleteFile(strPathName))
{
    AfxMessageBox(_T("删除文件成功。"));
}
else
{
    AfxMessageBox(_T("删除文件失败。"));
}

 

8.9 如何重命名文件

使用CFile::Rename静态方法

//重命名文件
CFile::Rename(strOldPathName, strNewPathName);

AfxMessageBox(_T("重命名文件成功。"));

 

8.10 如何查找文件

用CFileFind 相关操作

void CDemoDlg::Find(LPCTSTR lpszFileName)
{
    CString strWildcard = lpszFileName;
    strWildcard += _T("\\*.*");

    CFileFind finder;
    BOOL bFind = FALSE;

    //查找文件
    bFind = finder.FindFile(strWildcard);
    while (bFind)
    {
        //查找下一个文件
        bFind = finder.FindNextFile();

        //判断找到文件的是否包含"."或".."
        if (finder.IsDots())
        {
            continue;
        }

        //获得找到文件的名称
        if (finder.IsDirectory())
        {
            //找到文件的路径
            CString strFilePath = finder.GetFilePath();
            //递归查找文件
            Find(strFilePath);
        }

        //获得找到文件的名称
        CString strFileName = finder.GetFileName();

        CListBox* pListBox = (CListBox*)GetDlgItem(IDC_FILELIST);
        pListBox->AddString(strFileName);
    } 

    //结束查找
    finder.Close();
}

 

8.11 如何使用Shell操作文件

 

8.12 如何获得应用程序的目录

GetModuleFileName函数

void CDemoDlg::OnGetAppDir() 
{
    TCHAR szFileName[MAX_PATH];

    //获得应用程序的文件全路径和文件名
    if (::GetModuleFileName(NULL, szFileName, MAX_PATH))
    {
        //去掉文件名
        CString strFileName = szFileName;
        int nIndex = strFileName.ReverseFind('\\');
        CString strDirectory = strFileName.Left(nIndex);

        CString strText = _T("");
        strText.Format(_T("应用程序目录:\n%s"), strDirectory);
        AfxMessageBox(strText);
    }
}

 

8.13 如何获得或设置进程的当前目录

GetCurrentDirectory和SetCurrentDirectory方法

void CDemoDlg::OnGetCurDir() 
{
    TCHAR szDirectory[MAX_PATH];

    //获得进程的当前目录
    if (::GetCurrentDirectory(MAX_PATH, szDirectory))
    {
        CString strText = _T("");
        strText.Format(_T("进程的当前目录:\n%s"), szDirectory);
        AfxMessageBox(strText);
    }
}

void CDemoDlg::OnSetCurDir() 
{
    CString strDirectory = _T("C:\\");

    //设置进程的当前目录
    if (::SetCurrentDirectory(strDirectory))
    {
        CString strText = _T("");
        strText.Format(_T("进程的当前目录:\n%s"), strDirectory);
        AfxMessageBox(strText);
    }
}

 

8.14 如何获得Windows目录和System目录

GetWindowsDirectory和GetSystemDirectory函数,即C盘的Windows目录及Windows的System32子目录

void CDemoDlg::OnGetWinDir() 
{
    TCHAR szDirectory[MAX_PATH];

    //获得Windows目录
    if (::GetWindowsDirectory(szDirectory, MAX_PATH) > 0)
    {
        CString strText = _T("");
        strText.Format(_T("Windows目录:\n%s"), szDirectory);
        AfxMessageBox(strText);
    }
}

void CDemoDlg::OnGetSysDir() 
{
    TCHAR szDirectory[MAX_PATH];

    //获得System目录
    if (::GetSystemDirectory(szDirectory, MAX_PATH) > 0)
    {
        CString strText = _T("");
        strText.Format(_T("System目录:\n%s"), szDirectory);
        AfxMessageBox(strText);
    }    
}