青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

c++ file and directory 刪除,移動(dòng),目錄瀏覽對(duì)話框,找某目錄下的所有文件(包括子目錄)

Delete folders, subfolders and files easily

<PRE>void RecursiveDelete(CString szPath)
{
    CFileFind ff;
    CString path 
= szPath;
    
    
if(path.Right(1!= "\\")
        path 
+= "\\";

    path 
+= "*.*";

    BOOL res 
= ff.FindFile(path);

    
while(res)
    
{
        res 
= ff.FindNextFile();
        
if (!ff.IsDots() && !ff.IsDirectory())
            DeleteFile(ff.GetFilePath());
        
else if (ff.IsDirectory())
        
{
            path 
= ff.GetFilePath();
            RecursiveDelete(path);
            RemoveDirectory(path);
        }

    }

}
</PRE>

The CreateDir function creates folders and subfolders thereby completing the whole path passed to it. If the folder already exists, it is left unaffected, but if it doesn't exist, it is created. The CreateDirectory WIN32 API lets us create a directory, but it works only if the parent directory already exists. This function overcomes this limitation.

<PRE>void CreateDir(char* Path)
{
 
char DirName[256];
 
char* p = Path;
 
char* q = DirName; 
 
while(*p)
 
{
   
if (('\\' == *p) || ('/' == *p))
   
{
     
if (':' != *(p-1))
     
{
        CreateDirectory(DirName, NULL);
     }

   }

   
*q++ = *p++;
   
*= '\0';
 }

 CreateDirectory(DirName, NULL);
}
</PRE>

The DeleteAllFiles function deletes all the files (not folders) present in the specified path:

<PRE>void DeleteAllFiles(char* folderPath)
{
 
char fileFound[256];
 WIN32_FIND_DATA info;
 HANDLE hp; 
 sprintf(fileFound, 
"%s\\*.*", folderPath);
 hp 
= FindFirstFile(fileFound, &info);
 
do
    
{
       sprintf(fileFound,
"%s\\%s", folderPath, info.cFileName);
       DeleteFile(fileFound);
 
    }
while(FindNextFile(hp, &info)); 
 FindClose(hp);
}
</PRE>


The EmptyDirectory function deletes all the contents from a specified directory. The RemoveDirectory WIN32 API deletes an existing empty directory, but it doesn't work if the directory isn't empty. This function overcomes this limitation:

<PRE>void EmptyDirectory(char* folderPath)
{
 
char fileFound[256];
 WIN32_FIND_DATA info;
 HANDLE hp; 
 sprintf(fileFound, 
"%s\\*.*", folderPath);
 hp 
= FindFirstFile(fileFound, &info);
 
do
    
{
        
if (!((strcmp(info.cFileName, ".")==0)||
              (strcmp(info.cFileName, 
"..")==0)))
        
{
          
if((info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==
                                     FILE_ATTRIBUTE_DIRECTORY)
          
{
              
string subFolder = folderPath;
              subFolder.append(
"\\");
              subFolder.append(info.cFileName);
              EmptyDirectory((
char*)subFolder.c_str());
              RemoveDirectory(subFolder.c_str());
          }

          
else
          
{
              sprintf(fileFound,
"%s\\%s", folderPath, info.cFileName);
              BOOL retVal 
= DeleteFile(fileFound);
          }

        }

 
    }
while(FindNextFile(hp, &info)); 
 FindClose(hp);
}
</PRE>

瀏覽目錄dialog:
void CTestBrowseDlg::OnBrowse() 
{
    CString str;
    BROWSEINFO bi;
    
char name[MAX_PATH];
    ZeroMemory(
&bi,sizeof(BROWSEINFO));
    bi.hwndOwner
=GetSafeHwnd();
    bi.pszDisplayName
=name;
    bi.lpszTitle
="Select folder";
    bi.ulFlags
=BIF_USENEWUI;
    LPITEMIDLIST idl
=SHBrowseForFolder(&bi);
    
if(idl==NULL)
        
return;
    SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));
    str.ReleaseBuffer();
    m_Path
=str;
    
if(str.GetAt(str.GetLength()-1)!='\\')
        m_Path
+="\\";
    UpdateData(FALSE);
}

得到某目錄下的所有文件:
void RecursiveDelete(CString szPath)
{
    CFileFind ff;
    CString path 
= szPath;

    
if(path.Right(1!= "\\")
        path 
+= "\\";

    path 
+= "*.*";

    BOOL res 
= ff.FindFile(path);

    
while(res)
    
{
        res 
= ff.FindNextFile();
        
if ( !ff.IsDots()&&ff.IsDirectory())
        
{
            
            path 
= ff.GetFilePath();
            RecursiveDelete(path);
        }

        
else if (!ff.IsDirectory()&&!ff.IsDots())
        
{
            CString ss ; ss
= ff.GetFileName();
            printf(
"%s\n",ss);
            
        }

    }

    ff.Close();
}

posted on 2006-01-12 14:52 夢(mèng)在天涯 閱讀(5843) 評(píng)論(4)  編輯 收藏 引用 所屬分類: CPlusPlusMFC/QT

評(píng)論

# re: c++ file and directory 2006-01-12 15:12 小明

一點(diǎn)小問(wèn)題:

因?yàn)镈eleteFile不能Delete掉只讀文件,所以最好在DeleteFile之前,使用SetFileAttributes(file,FILE_ATTRIBUTE_NORMAL);  回復(fù)  更多評(píng)論   

# re: c++ file and directory 2006-01-12 16:39 夢(mèng)在天涯

也可以用searchpath()來(lái)找,是嗎?可惜就是沒(méi)有找到例子!
那位有的話,貢獻(xiàn)一下啊,謝謝!  回復(fù)  更多評(píng)論   

# re: c++ file and directory 2006-02-09 16:49 夢(mèng)在天涯

-------------------------------------------------------------------
、獲得當(dāng)前應(yīng)用程序路徑
#include < windows.h >
#include < string.h >

HINSTANCE hInst;
char szBuf[256];
char *p;

//拿到全部路徑
GetModuleFileName(hInst,szBuf,sizeof(szBuf));

//分離路徑和文件名。
p = szBuf;
while(strchr(p,'\\')) {
p = strchr(p,'\\');
p++;
}
*p = '\0';
//路徑在szBuf理了。  回復(fù)  更多評(píng)論   

# re: c++ file and directory 2006-02-20 12:01 blue_bean

用SHFileOperation,可以刪除只讀文件。


SHFILEOPSTRUCT op;
memset(&op, 0, sizeof(op));
op.pFrom = "c:\\text.ini";
op.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION;
op.wFunc = FO_DELETE;
if (SHFileOperation(&op) != 0)
{
// delete error
}   回復(fù)  更多評(píng)論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1816432
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美激情第三页| 亚洲一区二区三区涩| 一区二区三区欧美成人| 狠狠色噜噜狠狠色综合久| 亚洲老板91色精品久久| 亚洲福利免费| 久久久精品免费视频| 欧美一级免费视频| 欧美日韩精品一区二区天天拍小说| 玖玖玖免费嫩草在线影院一区| 国产精品素人视频| 一区二区欧美在线观看| 日韩天堂在线视频| 欧美激情一区在线| 亚洲国产婷婷| 亚洲国内自拍| 毛片av中文字幕一区二区| 久久免费99精品久久久久久| 国产精品亚发布| 亚洲图片欧美日产| 亚洲欧美精品伊人久久| 欧美特黄视频| 在线看欧美日韩| 欧美在线视频导航| 久久男人资源视频| 韩国女主播一区| 久久成年人视频| 久久网站免费| 亚洲福利视频三区| 欧美激情一区二区三区四区| 亚洲国产日韩在线一区模特| 99国产精品视频免费观看| 欧美精品日本| 一区二区欧美视频| 久久国产一区二区| 伊人婷婷欧美激情| 男女精品网站| av72成人在线| 亚洲欧美日韩专区| 国产亚洲成av人在线观看导航| 性欧美xxxx大乳国产app| 久久免费黄色| 91久久精品一区二区三区| 欧美日本一道本| 亚洲一区尤物| 久久久久久午夜| 最新国产乱人伦偷精品免费网站| 欧美激情久久久久久| 夜久久久久久| 久久久综合激的五月天| 亚洲国产天堂久久国产91| 欧美久久一级| 在线视频你懂得一区| 欧美三级网址| 香蕉视频成人在线观看| 欧美黄污视频| 亚洲欧美日韩天堂| 在线视频国产日韩| 国产精品扒开腿做爽爽爽视频 | 亚洲国语精品自产拍在线观看| 夜夜爽夜夜爽精品视频| 国产精品人人做人人爽| 美女主播一区| 亚洲色诱最新| 欧美jizz19hd性欧美| 亚洲综合色激情五月| 黄色成人精品网站| 欧美小视频在线| 久久久久久自在自线| 日韩网站在线| 欧美岛国激情| 欧美一级久久| 久久综合九色综合欧美狠狠| 一区二区欧美在线观看| 美女图片一区二区| 欧美亚洲视频| 99riav1国产精品视频| 国语对白精品一区二区| 国产精品a久久久久| 欧美大片免费看| 欧美中文日韩| 亚洲在线视频网站| 亚洲精品免费看| 久热国产精品| 久久精视频免费在线久久完整在线看| 999亚洲国产精| 伊人久久婷婷色综合98网| 国产精品亚洲人在线观看| 欧美精品在线网站| 女女同性女同一区二区三区91| 欧美一区亚洲二区| 亚洲先锋成人| 在线视频欧美日韩精品| 亚洲国产欧美一区二区三区久久 | 亚洲综合好骚| 一本色道久久88精品综合| 91久久极品少妇xxxxⅹ软件| 国产亚洲午夜| 国产日韩欧美精品| 国产麻豆一精品一av一免费| 国产精品久久国产三级国电话系列| 欧美成人精精品一区二区频| 麻豆成人av| 另类天堂视频在线观看| 久久免费观看视频| 久久久久一本一区二区青青蜜月| 久久国产一区二区| 久久精品人人| 久久亚洲免费| 美女主播一区| 欧美理论片在线观看| 欧美韩国日本综合| 欧美日韩第一区| 欧美日韩一二三四五区| 国产精品videosex极品| 国产精品日本一区二区 | 欧美性天天影院| 国产精品美女www爽爽爽视频| 欧美精品在线免费播放| 欧美日韩一区二区三区在线 | 亚洲一区二区三区视频播放| 亚洲深爱激情| 性欧美在线看片a免费观看| 欧美一区二区网站| 巨乳诱惑日韩免费av| 欧美成人综合一区| 亚洲精品久久久久久久久久久 | 亚洲视频网站在线观看| 亚洲一卡久久| 久久精品在线免费观看| 久久一区国产| 欧美日韩国产系列| 国产伦理一区| 亚洲高清一二三区| 一区二区三区视频在线看 | 亚洲午夜精品久久久久久浪潮| 亚洲制服欧美中文字幕中文字幕| 亚洲欧美日韩在线一区| 久久伊人亚洲| 亚洲人精品午夜在线观看| 亚洲素人在线| 久久午夜电影网| 欧美视频日韩| 永久免费精品影视网站| 在线综合亚洲欧美在线视频| 久久狠狠一本精品综合网| 欧美大色视频| 亚洲自拍偷拍网址| 欧美xx69| 国产一区二区毛片| 亚洲视频综合| 老司机aⅴ在线精品导航| 亚洲精品欧美精品| 久久久成人精品| 欧美视频在线观看免费| 亚洲福利专区| 久久国产精品72免费观看| 91久久精品国产| 久久精品欧洲| 国产精品视频在线观看| av不卡在线看| 美女网站在线免费欧美精品| 一区二区三区免费在线观看| 久久这里只精品最新地址| 国产农村妇女毛片精品久久麻豆| 99re热这里只有精品免费视频| 玖玖玖免费嫩草在线影院一区| 亚洲无毛电影| 欧美日韩视频| 亚洲三级影片| 欧美96在线丨欧| 欧美伊久线香蕉线新在线| 国产精品久久久久一区二区三区| 亚洲精品欧美日韩专区| 久久综合五月天婷婷伊人| 亚洲综合国产激情另类一区| 欧美三级电影网| 夜夜嗨av一区二区三区| 欧美国产免费| 久久国产精品久久久久久电车| 国产精品久久久久久av下载红粉| 亚洲乱码国产乱码精品精天堂| 麻豆精品在线视频| 久久精品国产综合精品| 国产欧美精品一区二区色综合 | 国产精品视频一区二区高潮| 一级日韩一区在线观看| 亚洲国产天堂久久国产91| 欧美成年人视频网站| 亚洲高清网站| 欧美激情小视频| 乱人伦精品视频在线观看| 激情久久综艺| 美女爽到呻吟久久久久| 久久久久久九九九九| 在线观看日韩专区| 欧美aa国产视频| 欧美高清在线一区二区| 一本色道久久| 国产精品99久久久久久久女警 |