1. 程式人生 > >VC++資料夾的建立和資料夾的刪除總結

VC++資料夾的建立和資料夾的刪除總結

假設我想判斷C:\Program Files中有沒有一個名為hotel的資料夾,有的話就什麼也不做,沒有的話就建立一個名為hotel的資料夾,
請問這個程式碼應該怎麼寫呢?(能建立一個隱藏的資料夾更好)
//答案
一、BOOL CreateDirectory(
  LPCTSTR lpPathName,                         // directory name
  LPSECURITY_ATTRIBUTES lpSecurityAttributes  
               // Pointer to a SECURITY_ATTRIBUTES structure
);
要判斷資料夾是否存在,首先用CFindFile類得到檔案(可以判斷是否存在),存在的話用IsDirectory判斷是否資料夾
二、BOOL PathIsDirectory(
    LPCTSTR pszPath
    );////判斷一個目錄是否存在!
三、
#include <windows.h>
#include <iostream> 
using namespace std;
int main()
{
char szDirName[] = "C:\\Program Files\\hotel";


if( CreateDirectory(szDirName, NULL) ) //判斷是否存在,否則建立
{
cout<<szDirName<<" : Not Exist"<<endl; 
SetFileAttributes(szDirName, FILE_ATTRIBUTE_HIDDEN ); //隱藏(設定為隱藏)
cout<<"Create Successed!"<<endl;
}
return 0;
}
四在vc++6.0
#include <direct.h>  
#include <stdio.h>  
#include <stdlib.h>//for system()函式  
int main(void)  
{   
     _mkdir("D:\\myd");   //這個就是建立一個目錄 mkdir 就是make directory 的意思
     system("dir D:\\myd");  //這是開啟這個目錄 的意思
    system("start D:");    // 這是開啟一個獨立視窗程式來執行 也就是開一個黑屏dos介面
     getchar()();             //這個是從螢幕獲得輸入
    _rmdir("D:\\myd");    //這個是移除這個目錄
     return 0;               //返回0
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
VC如何刪除資料夾下的檔案
BOOL CDlgData::DeleteDirectory(char *sDirName)
{
    CFileFind tempFind; 
    char sTempFileFind[200] ;
 
    sprintf(sTempFileFind,"%s\\*.*",sDirName); 
    BOOL IsFinded = tempFind.FindFile(sTempFileFind); 
    while (IsFinded) 
    { 
        IsFinded = tempFind.FindNextFile(); 
 
        if (!tempFind.IsDots()) 
        { 
            char sFoundFileName[200]; 
            strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200)); 
 
            if (tempFind.IsDirectory()) 
            { 
                char sTempDir[200]; 
                sprintf(sTempDir,"%s\\%s",sDirName,sFoundFileName); 
                DeleteDirectory(sTempDir); 
            } 
            else 
            { 
                char sTempFileName[200]; 
                sprintf(sTempFileName,"%s\\%s",sDirName,sFoundFileName); 
                DeleteFile(sTempFileName); 
            } 
        } 
    } 
    tempFind.Close(); 
    if(!RemoveDirectory(sDirName)) 
    { 
        return FALSE; 
    } 
    return TRUE; 
}


註釋
DeleteDirectory(sTempDir); 
這個函式只能刪除空目錄。你必須先刪除裡面的所有檔案才行
可以用WINSHELLAPI int WINAPI SHFileOperation(


    LPSHFILEOPSTRUCT lpFileOp
   );函式刪除包含檔案的目錄
////////////////////////////////////////////