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

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>
              香蕉久久国产| 老司机成人网| 亚洲视频网在线直播| 欧美啪啪成人vr| 正在播放亚洲| 亚洲欧美另类国产| 国产主播一区| 欧美~级网站不卡| 欧美精品福利视频| 亚洲欧美日本另类| 欧美一区二区三区在线观看视频 | 亚洲在线不卡| 国内精品**久久毛片app| 欧美成人dvd在线视频| 欧美人在线观看| 欧美一级专区| 蜜臀91精品一区二区三区| 99精品免费| 小黄鸭精品密入口导航| 亚洲高清在线播放| 亚洲午夜精品网| 激情综合色丁香一区二区| 亚洲国产精品久久久| 国产精品高潮视频| 欧美肥婆bbw| 国产精品视频一二| 欧美国产三区| 国产精品一级| 亚洲全部视频| 国外成人在线视频| 亚洲视频观看| 亚洲激情影院| 欧美一区2区三区4区公司二百 | 欧美日韩综合| 欧美国产日本高清在线| 国产精品久久久久久久免费软件 | 欧美一级理论性理论a| 免费在线看一区| 久久精品成人一区二区三区蜜臀 | 国产精品美女久久久浪潮软件| 久久久欧美一区二区| 欧美日韩精品一区二区三区| 久久久久久久一区二区| 欧美特黄a级高清免费大片a级| 欧美福利视频在线| 精品99一区二区| 亚洲一区视频在线| 亚洲一级电影| 欧美激情日韩| 亚洲国产精品久久人人爱蜜臀 | 欧美aaa级| 久久亚洲免费| 国语自产偷拍精品视频偷| 亚洲婷婷综合久久一本伊一区| 日韩亚洲欧美一区| 另类激情亚洲| 欧美国产三区| 亚洲精品1区| 久久中文在线| 欧美激情在线观看| 亚洲人成人一区二区在线观看| 久久精品国产第一区二区三区最新章节 | 欧美日韩理论| 91久久久一线二线三线品牌| 91久久夜色精品国产九色| 久久午夜电影网| 欧美激情第一页xxx| 在线观看中文字幕亚洲| 久久久亚洲欧洲日产国码αv| 久久久久国产精品一区二区| 国产视频久久网| 久久国产精品亚洲77777| 久久免费高清视频| 在线免费观看视频一区| 久久综合色婷婷| 亚洲国内精品| 亚洲一区二区三区久久| 国产精品毛片一区二区三区 | 99re热这里只有精品免费视频| 一区二区三区毛片| 国产精品国产三级国产aⅴ入口 | 欧美黄污视频| 一区二区三区**美女毛片 | 影音先锋久久资源网| 久久全国免费视频| 亚洲黄色尤物视频| 亚洲主播在线| 国产深夜精品| 免费一级欧美在线大片| 亚洲免费激情| 久久精品男女| 亚洲久久视频| 国产欧美婷婷中文| 男人的天堂亚洲在线| 一本色道久久精品| 久久伊伊香蕉| 一区二区三区精品在线| 国产视频欧美| 欧美韩日一区二区| 午夜在线a亚洲v天堂网2018| 欧美不卡视频| 亚洲综合清纯丝袜自拍| 好看的av在线不卡观看| 欧美日韩网址| 麻豆精品在线观看| 亚洲欧美综合国产精品一区| 欧美大片在线观看| 性欧美1819性猛交| 99re热这里只有精品视频| 国产日韩欧美不卡在线| 欧美国产三区| 久久美女艺术照精彩视频福利播放| 亚洲日本一区二区三区| 久久久久久高潮国产精品视| 亚洲视频在线免费观看| 亚洲国产成人在线播放| 国产精品视频久久久| 欧美日韩成人在线观看| 久久亚洲高清| 久久精品国产亚洲精品 | 亚洲欧美综合一区| 亚洲美女在线一区| 亚洲成色777777女色窝| 国产麻豆综合| 国产精品日韩高清| 欧美日韩麻豆| 欧美伦理影院| 欧美成人午夜| 久久亚洲视频| 久久午夜av| 久久久久久9999| 午夜影视日本亚洲欧洲精品| 亚洲午夜激情在线| 正在播放亚洲| 在线亚洲成人| 中文在线资源观看视频网站免费不卡| 亚洲成色www久久网站| 欧美成人影音| 欧美黄污视频| 欧美激情亚洲另类| 欧美激情综合| 欧美激情 亚洲a∨综合| 欧美激情黄色片| 欧美激情一区| 亚洲三级网站| 99re66热这里只有精品4| 亚洲免费观看高清在线观看| 欧美专区一区二区三区| 久久婷婷一区| 亚洲国产一区在线观看| 亚洲国产精品成人精品| 亚洲成人资源网| 亚洲精品一区二区在线| 亚洲精品欧美极品| 一区二区三区回区在观看免费视频| 日韩视频中文| 亚洲一区在线免费观看| 性色av一区二区三区在线观看| 欧美一区二区三区在| 久久久女女女女999久久| 免播放器亚洲一区| 欧美激情在线观看| 亚洲精品色婷婷福利天堂| 亚洲视频一区在线| 午夜视频在线观看一区| 久久蜜桃av一区精品变态类天堂| 美日韩在线观看| 欧美日韩精品免费看| 国产精自产拍久久久久久| 激情国产一区| 一本一本久久a久久精品综合麻豆| 亚洲一区二区伦理| 另类酷文…触手系列精品集v1小说| 蜜月aⅴ免费一区二区三区| 亚洲精品久久久蜜桃 | 欧美尤物巨大精品爽| 免费国产一区二区| 亚洲乱码视频| 久久aⅴ国产欧美74aaa| 欧美精品一区二区三区蜜桃 | 国产欧美日韩在线视频| 亚洲第一精品影视| 亚洲欧美日韩综合aⅴ视频| 久久深夜福利免费观看| 亚洲人成啪啪网站| 欧美一区二区三区在线| 欧美精品久久久久久久免费观看| 国产女人精品视频| 日韩视频一区| 美女网站久久| 午夜欧美精品久久久久久久| 麻豆freexxxx性91精品| 国产人成精品一区二区三| 亚洲精品美女91| 久久综合伊人77777| 一区二区日本视频| 欧美激情偷拍| 亚洲国产美女| 狼人天天伊人久久| 午夜精品在线观看|