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

C++ Programmer's Cookbook

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

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

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 夢在天涯 閱讀(5829) 評論(4)  編輯 收藏 引用 所屬分類: CPlusPlusMFC/QT

評論

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

一點小問題:

因為DeleteFile不能Delete掉只讀文件,所以最好在DeleteFile之前,使用SetFileAttributes(file,FILE_ATTRIBUTE_NORMAL);  回復(fù)  更多評論   

# re: c++ file and directory 2006-01-12 16:39 夢在天涯

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

# re: c++ file and directory 2006-02-09 16:49 夢在天涯

-------------------------------------------------------------------
、獲得當(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ù)  更多評論   

# 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ù)  更多評論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811750
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              久久久久久九九九九| 欧美夜福利tv在线| 欧美久久精品午夜青青大伊人| 亚洲国产免费| 91久久国产综合久久91精品网站| 欧美成年人视频网站| 一区二区三区欧美成人| 在线亚洲欧美视频| 狠狠爱成人网| 亚洲人成网站在线观看播放| 国产精品欧美一区喷水| 久久精品国产亚洲a| 免费国产自线拍一欧美视频| 亚洲精品一区二区三| 亚洲私人影吧| 亚洲大胆女人| 一区二区电影免费观看| 国内揄拍国内精品少妇国语| 欧美激情bt| 国产精品一区二区在线观看| 毛片av中文字幕一区二区| 欧美日韩123| 久久网站免费| 国产精品mv在线观看| 蜜臀av在线播放一区二区三区| 欧美日韩国产区| 久久青草欧美一区二区三区| 欧美日本在线看| 久久亚洲精品一区| 国产精品美女久久久久久2018| 榴莲视频成人在线观看| 欧美视频在线观看 亚洲欧| 免费不卡欧美自拍视频| 国产精品亚洲激情| 亚洲激情校园春色| 永久免费精品影视网站| 亚洲一区二区三区高清不卡| 亚洲精品日韩一| 久久精品亚洲精品| 欧美亚洲一区二区在线观看| 欧美精品在线播放| 欧美国产一区视频在线观看| 国产午夜精品一区理论片飘花 | 午夜精品久久久| 老司机午夜精品| 久久久久九九九九| 国产精品日韩在线播放| 日韩小视频在线观看| 亚洲区一区二| 欧美成人精品在线视频| 欧美凹凸一区二区三区视频| 国产在线观看精品一区二区三区 | 一本色道婷婷久久欧美| 最新精品在线| 免费看的黄色欧美网站| 免费在线视频一区| 一区二区视频免费完整版观看| 午夜电影亚洲| 久久激情五月激情| 国产亚洲亚洲| 欧美专区亚洲专区| 久久综合九色综合欧美就去吻| 国产一级揄自揄精品视频| 亚洲欧美日韩国产一区二区三区| 亚洲欧美日韩国产综合在线| 国产精品福利在线观看| 亚洲一区二区在线看| 亚洲欧美中文日韩在线| 国产精品视频免费| 性8sex亚洲区入口| 老司机成人网| 亚洲激情一区二区| 欧美绝品在线观看成人午夜影视| 亚洲欧洲精品一区二区三区不卡| 亚洲剧情一区二区| 欧美日韩亚洲一区二| 亚洲一区欧美二区| 久久免费少妇高潮久久精品99| 黄色一区二区三区四区| 蜜臀av一级做a爰片久久| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品一品区二品区三品区| 欧美日韩激情小视频| 亚洲一区在线免费观看| 久久久久综合网| 日韩视频一区二区三区在线播放| 欧美日韩视频在线第一区| 宅男在线国产精品| 久久免费视频观看| 夜色激情一区二区| 国产一区二区三区奇米久涩| 免费亚洲一区二区| 亚洲一区国产精品| 欧美高清视频一区二区三区在线观看 | 亚洲狠狠丁香婷婷综合久久久| 夜夜精品视频| 国产一区二区三区久久悠悠色av| 欧美大片在线影院| 午夜视频在线观看一区二区三区| 蜜臀久久99精品久久久久久9| 一区二区三区www| 国语自产精品视频在线看一大j8| 欧美激情一二区| 欧美一区二区三区免费看 | 久久亚洲一区| 亚洲午夜三级在线| 在线看一区二区| 国产精品美女久久久久久2018| 久久永久免费| 亚洲影视在线| 99亚洲伊人久久精品影院红桃| 久久久久久一区| 亚洲欧美日韩国产精品| 亚洲激情在线激情| 国产一区二区主播在线| 国产精品白丝jk黑袜喷水| 免费不卡在线观看av| 欧美在线视频观看免费网站| 一区二区三区黄色| 91久久久在线| 免费亚洲电影| 久久久久国产精品午夜一区| 亚洲尤物视频网| 一区二区三区|亚洲午夜| 亚洲精华国产欧美| 在线日韩中文字幕| 国外精品视频| 国产一区亚洲一区| 国产日韩精品一区二区浪潮av| 欧美性做爰毛片| 欧美视频在线观看免费| 欧美激情视频一区二区三区在线播放 | 亚洲一区三区视频在线观看| 99国内精品久久久久久久软件| 在线免费一区三区| 亚洲国产岛国毛片在线| 国内精品福利| 黄色欧美日韩| 影音先锋成人资源站| 一区二区三区在线免费视频| 狠狠色狠狠色综合人人| 韩国一区二区在线观看| 好男人免费精品视频| 激情视频一区二区| 亚洲国产精品久久久久婷婷884| 在线免费不卡视频| 亚洲精品之草原avav久久| 99在线|亚洲一区二区| 亚洲神马久久| 亚洲欧美亚洲| 久久久久九九九九| 欧美不卡一区| 亚洲美女精品一区| 亚洲一区二区在线观看视频| 亚洲欧美日韩国产成人| 久久精品麻豆| 欧美激情视频网站| 国产精品人人做人人爽| 国产亚洲激情在线| 亚洲福利视频三区| 亚洲视频www| 欧美在线观看视频一区二区| 免费久久99精品国产自| 亚洲国产日韩综合一区| 在线亚洲伦理| 久久久另类综合| 欧美日韩国产在线观看| 国产乱码精品一区二区三区不卡| 激情综合电影网| 亚洲一区二区不卡免费| 久久精品电影| 亚洲精品国产精品久久清纯直播| 亚洲网站在线| 久热精品视频在线观看| 国产精品草莓在线免费观看| 黄色精品一区二区| 亚洲婷婷国产精品电影人久久| 久久久久成人网| 99爱精品视频| 久久午夜av| 国产精品乱人伦中文| 亚洲国产另类久久精品| 午夜精品影院| 91久久精品国产91性色tv| 欧美与黑人午夜性猛交久久久| 欧美激情第9页| 韩国自拍一区| 欧美一区=区| 亚洲美洲欧洲综合国产一区| 久久久福利视频| 国产精品久久久久久久午夜片| 亚洲国产片色| 老司机久久99久久精品播放免费| 一本色道**综合亚洲精品蜜桃冫| 久久婷婷国产综合国色天香| 国产精品视频成人| 亚洲视频欧美在线| 亚洲青色在线| 欧美成人精品一区二区三区| 伊人成年综合电影网|