zoukankan      html  css  js  c++  java
  • vc++基础班[22]---文件的基本操作2

     
    MFC 中的 CFile 及其派生类中没有提供直接进行文件的复制操作,因而要借助于SDK API;
    SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()
     
    ①、文件的复制:CopyFile
    若要复制文件夹,可以在目标位置新建一文件夹,然后将源文件夹里面的文件进行遍历,一个一个的复制到目标文件夹内即可!
     
    ②、文件的重命名或移动 [适用于文件夹]:
    static CFile::Rename 重命名文件;
    MoveFile,※※※注意:该函数不仅可以移动文件,还可以移动目录,包括目录中的文件和子目录,但是目录的移动只能限制在一个驱动器;
    即:同一驱动器内为重命名操作,不同驱动器内为移动操作;
     
    ③、文件的删除:CFile::Remove 或 DeleteFile
    如果文件有只读属性怎么办?普通的方法还能删除成功吗?
     
    ④、文件属性信息的获取:CFile::GetStatus
    看看其内部 SDK API 的实现;
     
    ⑤、文件属性信息的设置:CFile::SetStatus
    看看其内部 SDK API 实现;
    这回可以成功的将只读属性的文件删除了……方法就是去除文件的只读属性后再进行删除操作;
     
    BOOL DelReadOnlyFile(LPCTSTR lpszPath)
    {
     DWORD dwRet = GetFileAttributes(lpszPath);
     if (dwRet == INVALID_FILE_ATTRIBUTES) return FALSE;
     
     if (dwRet & FILE_ATTRIBUTE_READONLY){
      dwRet &= ~FILE_ATTRIBUTE_READONLY;
      SetFileAttributes(lpszPath, dwRet);
     }
     
     return DeleteFile(lpszPath);
    }
     
    ⑥、判断文件是否存在:方法也有很多种:
    1>、_access 函数;
    2>、CreateFile 函数;
    3>、FindFirstFile 函数;
    4>、GetFileAttributes 函数;
    5>、PathFileExists(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)
     
    这里面给大家使用 GetFileAttributes 函数进行讲解:
    BOOL TargetIsExist(LPCTSTR lpszPath)
    {
     BOOL bRet = TRUE;
     DWORD dwRet = GetFileAttributes(lpszPath);
     if (dwRet == INVALID_FILE_ATTRIBUTES && GetLastError() == ERROR_FILE_NOT_FOUND){
      bRet = FALSE;
     }
     return bRet;
    }
     
    ⑦、判断给定路径是文件还是目录:
    1>、GetFileAttributes 函数;
    2>、PathIsDirectory(是 Shell Lightweight Utility APIs 函数:Header: Declared in Shlwapi.h Import Library: Shlwapi.lib)
    3>、……
     
    这里面给大家使用 GetFileAttributes 函数进行讲解:
    int TargetIsDirectory(LPCTSTR lpszPath)
    {
     int iRet = -1;
     DWORD dwRet = GetFileAttributes(lpszPath);
     if (dwRet == INVALID_FILE_ATTRIBUTES){
      iRet = -1;
     }else if (dwRet & FILE_ATTRIBUTE_DIRECTORY){
      iRet = 1;
     }else{
      iRet = 0;
     }
     
     return iRet;
    }
  • 相关阅读:
    Python for Data Science
    Python for Data Science
    Python for Data Science
    团队项目选题报告(I know)
    结对第一次作业——原型设计
    团队展示(I know)
    软件工程实践第二次作业——个人项目实战(数独)
    软件工程实践第一次作业--准备篇
    Java微笔记(9)
    Java微笔记(8)
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243368.html
Copyright © 2011-2022 走看看