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

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>
              亚洲成色www8888| 久久综合精品一区| 欧美午夜无遮挡| 亚洲午夜精品视频| 一区二区三区欧美成人| 国产精品入口夜色视频大尺度| 亚洲精品乱码久久久久久久久| 亚洲国产婷婷香蕉久久久久久99| 妖精成人www高清在线观看| 欧美日韩精品在线观看| 亚洲欧美中文在线视频| 欧美成人一区在线| 欧美日韩国产探花| 在线免费高清一区二区三区| 亚洲毛片在线观看.| 久久成人精品一区二区三区| 狠狠色丁香婷婷综合| 欧美黑人一区二区三区| 欧美日韩另类字幕中文| 国内精品伊人久久久久av影院 | 欧美天堂亚洲电影院在线播放| 国产视频不卡| 亚洲欧美在线x视频| 亚洲欧洲在线观看| 欧美日韩在线免费观看| 亚洲欧洲精品一区二区三区不卡 | 欧美不卡在线| 99精品欧美一区二区三区| 亚洲免费在线精品一区| 欧美高清视频在线| 欧美亚州在线观看| 免费成人美女女| 国产精品福利av| 亚洲一区影院| 欧美一区免费视频| 日韩西西人体444www| 亚洲大胆人体视频| 国产精品入口| 性色av香蕉一区二区| 久久精品国产一区二区电影| 久色婷婷小香蕉久久| 欧美视频在线一区| 久久一区免费| 亚洲综合视频网| 亚洲视频axxx| 亚洲美女色禁图| 久久久久天天天天| 久久电影一区| 欧美网站大全在线观看| 亚洲欧美日本国产专区一区| 欧美阿v一级看视频| 美女啪啪无遮挡免费久久网站| 久久久999成人| 亚洲激情一区| 亚洲激情影视| 欧美三级视频在线播放| 亚洲免费在线电影| 亚洲欧美清纯在线制服| 中文在线一区| 欧美日韩国产欧| 亚洲风情亚aⅴ在线发布| 亚洲高清av| 久色婷婷小香蕉久久| 欧美视频观看一区| 亚洲日产国产精品| 国产精品国产三级国产| 99精品国产在热久久下载| 亚洲日韩成人| 亚洲制服丝袜在线| 午夜精品视频| 国产日韩欧美另类| 久久激情综合网| 老鸭窝91久久精品色噜噜导演| 国产一区二区三区在线免费观看| 久久成人18免费观看| 麻豆成人综合网| 最新成人av网站| 欧美激情第五页| 99视频精品免费观看| 国产一区亚洲| 亚洲美女视频网| 伊人蜜桃色噜噜激情综合| 久久国产欧美| 免费黄网站欧美| 亚洲另类在线一区| 欧美激情一区二区三区在线| 亚洲国产精品一区二区三区| 99精品久久免费看蜜臀剧情介绍| 欧美日韩另类综合| 欧美 日韩 国产 一区| 欧美另类在线播放| 久久久一本精品99久久精品66| 欧美激情aⅴ一区二区三区| 日韩视频二区| 久久精品国产精品| 亚洲国产精品成人va在线观看| 午夜在线精品偷拍| 亚洲一二三级电影| 欧美成人免费小视频| av成人免费在线| 国产精品久久久久久久久久ktv| 亚洲精品1234| 另类图片综合电影| 亚洲国内自拍| 国产精品高潮呻吟久久av无限| 午夜免费在线观看精品视频| 亚洲第一级黄色片| 欧美在线视频a| 亚洲精品国久久99热| 午夜精品亚洲一区二区三区嫩草| 欧美成人有码| 伊人成年综合电影网| 欧美精品一区二区视频| 亚洲电影免费观看高清| 久久国产精品一区二区三区四区| 亚洲精品国产精品国自产观看| 国产精品免费视频xxxx| 亚洲视频精选在线| 亚洲免费在线观看| 欧美性天天影院| 女女同性精品视频| 香港久久久电影| 性伦欧美刺激片在线观看| 久久婷婷色综合| 亚洲伦理一区| 欧美福利专区| 亚洲清纯自拍| 国产亚洲精品久久飘花| 欧美日本精品| 99日韩精品| 欧美激情中文不卡| 久久精品一级爱片| 在线观看视频免费一区二区三区| 欧美视频中文一区二区三区在线观看| 国产精品一二三四| 米奇777在线欧美播放| 亚洲黄色免费网站| 久久人91精品久久久久久不卡| 亚洲嫩草精品久久| 亚洲在线免费| 国模精品一区二区三区| 国产精品永久入口久久久| 午夜国产精品影院在线观看 | 国产美女一区| 欧美成人免费在线| 久久久国产一区二区三区| 国产麻豆综合| 国产精品日日摸夜夜添夜夜av| 亚洲欧美日本伦理| 麻豆精品网站| 一区二区精品在线| 国产欧美欧美| 国产亚洲精品一区二区| 国产一区二区精品丝袜| 一区在线视频观看| 亚洲人久久久| 国产伦精品一区二区三区视频黑人| 在线视频亚洲| 国产一区二区看久久| 欧美日韩国产美| 欧美一级夜夜爽| 亚洲伦理自拍| 欧美不卡在线视频| 亚洲国产成人porn| 一本久道久久综合狠狠爱| 久久国产精品亚洲77777| 国产午夜精品久久久久久久| 国产亚洲成年网址在线观看| 国内精品久久久久久久影视麻豆 | 国产精品久久久对白| 美乳少妇欧美精品| 欧美另类极品videosbest最新版本 | 欧美午夜激情小视频| 久久激情五月丁香伊人| 99精品国产在热久久婷婷| 亚洲尤物精选| 99综合电影在线视频| 亚洲国产合集| 亚洲一区二区在线免费观看视频 | 欧美日本一区二区视频在线观看| 欧美午夜影院| 欧美精品在线播放| 可以免费看不卡的av网站| 欧美一区二区视频在线观看2020 | 久久尤物视频| 国产精品日韩电影| 国产精品视频午夜| 欧美视频一区二区三区四区| 国产亚洲精品久久久久婷婷瑜伽| 亚洲精品美女| 日韩亚洲欧美成人一区| 久久国产精品久久久| 91久久极品少妇xxxxⅹ软件| 欧美一区二区| 欧美视频不卡中文| 国产精品久久久久9999| 亚洲欧洲三级电影| 久久久久国色av免费观看性色| 久久精品99国产精品酒店日本| 欧美一级网站|