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

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>
              99国产麻豆精品| 亚洲激情婷婷| 国产美女精品视频| 国产精品日韩在线| 国产精品久久久久久模特| 欧美日韩国产麻豆| 欧美日韩亚洲另类| 国产精品久久久久7777婷婷| 欧美午夜a级限制福利片| 欧美日韩一区二区三区四区在线观看 | 久久国产精彩视频| 久久国产精品久久精品国产| 久久超碰97中文字幕| 久久久久久久久久久成人| 久久一区国产| 欧美黑人一区二区三区| 欧美激情按摩| 欧美三级欧美一级| 国产免费一区二区三区香蕉精| 国产日韩精品一区二区浪潮av| 国产日本欧美在线观看| 精品成人免费| 日韩视频在线你懂得| 亚洲一区二区三区国产| 欧美一区二区私人影院日本| 久久人人超碰| 亚洲国产成人av在线| 99视频精品在线| 午夜影视日本亚洲欧洲精品| 久久久久久久一区二区| 欧美成人69| 国产精品九色蝌蚪自拍| 精品99一区二区| 99视频一区| 欧美制服丝袜第一页| 欧美超级免费视 在线| 日韩视频在线观看免费| 午夜精品短视频| 欧美 日韩 国产一区二区在线视频| 欧美日韩在线观看一区二区三区 | 久久人体大胆视频| 欧美日韩1区| 国产欧美二区| 亚洲人体1000| 香蕉成人啪国产精品视频综合网| 久久琪琪电影院| 日韩亚洲欧美在线观看| 久久激情网站| 欧美日韩亚洲综合| 在线电影国产精品| 亚洲视频在线二区| 久久综合久久美利坚合众国| 日韩视频不卡| 久久久久9999亚洲精品| 国产精品h在线观看| 亚洲电影欧美电影有声小说| 亚洲男人第一网站| 亚洲高清激情| 欧美专区在线播放| 国产精品久久久久久模特| 91久久午夜| 久久亚洲一区二区| 亚洲夜间福利| 欧美激情无毛| 在线视频国产日韩| 久久精品国产亚洲一区二区| 日韩一区二区精品| 欧美v国产在线一区二区三区| 国产欧美日韩在线视频| 亚洲天堂男人| 亚洲人午夜精品| 老司机精品久久| 国产一区二区三区自拍| 亚洲一二三级电影| 亚洲国产乱码最新视频| 久久久久久亚洲综合影院红桃 | 午夜日韩视频| 欧美日韩综合久久| 亚洲精品在线一区二区| 美女亚洲精品| 久久精品久久99精品久久| 国产精品亚洲美女av网站| 一个人看的www久久| 亚洲国产精品va| 久久综合色影院| 黄色亚洲大片免费在线观看| 欧美一区二区在线看| 一区二区三区视频在线观看 | 久久久亚洲欧洲日产国码αv| 国产麻豆精品theporn| 亚洲在线第一页| 亚洲美女精品成人在线视频| 欧美黄色视屏| 日韩午夜在线电影| 亚洲黄色小视频| 欧美成人激情在线| 亚洲日本成人女熟在线观看| 免费永久网站黄欧美| 久久野战av| 亚洲国产专区校园欧美| 免费在线亚洲| 欧美mv日韩mv国产网站app| 亚洲国产一区二区a毛片| 欧美大成色www永久网站婷| 麻豆久久婷婷| 亚洲久久在线| 亚洲黄色小视频| 欧美日韩高清在线观看| 亚洲一区二区三区免费在线观看 | 久久久成人精品| 一区二区视频免费在线观看| 免费短视频成人日韩| 女女同性精品视频| 国内成+人亚洲| 亚洲一区二区免费在线| 久久人人97超碰国产公开结果| 亚洲欧洲一二三| 欧美黄在线观看| 美女主播精品视频一二三四| 亚洲国产成人在线| 亚洲激情一区二区| 欧美偷拍另类| 久久国产福利| 久久米奇亚洲| 日韩视频在线播放| 亚洲视频一区二区在线观看| 国产精品一区在线观看| 美女诱惑黄网站一区| 欧美激情第9页| 午夜精品福利视频| 久久久xxx| 一个人看的www久久| 亚洲免费视频网站| 亚洲国产成人在线播放| 日韩午夜一区| 国产私拍一区| 亚洲欧洲免费视频| 国产欧美三级| 欧美成人一区二区在线| 欧美日韩综合网| 久久久女女女女999久久| 欧美国产成人在线| 欧美一区二区三区成人| 麻豆久久精品| 欧美一区二区三区免费在线看 | 久久精品毛片| 99视频精品| 欧美在线观看天堂一区二区三区| 亚洲精品你懂的| 亚洲欧美日本日韩| 亚洲精品欧美精品| 午夜精品久久久久99热蜜桃导演| 亚洲激情在线观看| 亚洲欧美卡通另类91av| 亚洲精品孕妇| 欧美在线首页| 亚洲影院色无极综合| 久久免费黄色| 午夜精品久久久久久久久久久久| 久久视频精品在线| 先锋影音国产精品| 欧美高清视频一区| 久久免费视频网| 国产精品啊啊啊| 亚洲国产精品福利| 精品av久久久久电影| 在线亚洲欧美视频| 亚洲精品乱码久久久久久黑人 | 美女国产一区| 国产精品五区| 亚洲狼人综合| 亚洲黄色高清| 欧美在线一级va免费观看| 亚洲欧美日韩国产另类专区| 噜噜噜噜噜久久久久久91| 久久久精品999| 国产精品第13页| 亚洲精品久久视频| 亚洲大胆人体在线| 午夜精品久久一牛影视| 亚洲一区二区三区777| 欧美精品久久一区二区| 免费人成网站在线观看欧美高清| 国产免费成人在线视频| 宅男精品导航| 一本一本久久a久久精品综合麻豆| 美女脱光内衣内裤视频久久影院| 久久一区国产| 国产午夜精品一区二区三区视频 | 久久亚洲国产成人| 久久精品盗摄| 国产精品亚洲片夜色在线| 夜夜嗨av一区二区三区中文字幕| 亚洲精品欧美| 欧美成人精品1314www| 欧美电影在线| 最近看过的日韩成人| 欧美成人综合网站| 欧美国产日本高清在线| 亚洲国产日韩精品|