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

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>
              国产精品久久久一区二区| 欧美日韩一区二区免费在线观看| 国产精品专区h在线观看| 一区二区三区日韩精品视频| 日韩一级大片| 国产精品福利片| 欧美亚洲一区| 久久久久久九九九九| 亚洲黄色精品| 99精品福利视频| 国产欧美韩日| 亚洲春色另类小说| 欧美日韩成人激情| 欧美一区二视频| 老巨人导航500精品| 日韩小视频在线观看专区| 中日韩美女免费视频网址在线观看| 国产精品嫩草影院av蜜臀| 久久全球大尺度高清视频| 媚黑女一区二区| 亚洲在线第一页| 久久久久国产一区二区三区四区| 亚洲三级色网| 午夜久久美女| 亚洲精品欧美一区二区三区| 亚洲天堂男人| 亚洲国产精品激情在线观看| 99精品视频网| 1024欧美极品| 亚洲视频中文字幕| 一区二区三区亚洲| 亚洲素人在线| 亚洲人被黑人高潮完整版| 亚洲视频综合在线| 亚洲国产日韩一级| 欧美在线日韩在线| 一区二区三区**美女毛片| 久久九九久精品国产免费直播| 亚洲神马久久| 欧美不卡视频一区发布| 久久精品国产99精品国产亚洲性色| 欧美电影在线观看| 久久视频精品在线| 国产精品网站在线观看| 亚洲精品裸体| 亚洲福利在线看| 欧美在线观看一区二区| 午夜精品久久久久影视 | 一区二区国产在线观看| 在线不卡a资源高清| 亚洲综合精品自拍| 亚洲欧美日韩成人| 欧美日韩大片| 亚洲国产精品热久久| 一区二区在线视频| 久久狠狠一本精品综合网| 欧美一区二区观看视频| 国产精品xvideos88| 99re这里只有精品6| 日韩视频在线免费| 欧美—级a级欧美特级ar全黄| 欧美v亚洲v综合ⅴ国产v| 国产亚洲综合在线| 久久不射2019中文字幕| 久久精品国产精品亚洲| 国产日本欧美一区二区| 午夜在线播放视频欧美| 欧美一区二区三区四区在线观看地址 | 国产亚洲福利社区一区| 香蕉久久久久久久av网站| 久久av免费一区| 国产一在线精品一区在线观看| 性欧美videos另类喷潮| 久久久久一区二区三区| 黄色一区二区在线| 久久综合激情| 亚洲人成网在线播放| 亚洲无线视频| 国产精品一区一区| 久久九九国产| 亚洲黄色小视频| 亚洲免费视频观看| 国产一区二区三区久久久| 久久久久久国产精品mv| 亚洲国产精品第一区二区三区| 一二三区精品| 国产美女一区二区| 久久亚洲精品网站| 亚洲精品一区二区三区不| 午夜日韩av| 在线观看欧美日韩| 欧美日韩一区二区视频在线观看| 亚洲天堂网在线观看| 久久综合九色综合久99| 99精品欧美一区二区蜜桃免费| 欧美午夜视频在线| 国产精品porn| 亚洲欧美在线看| 欧美大秀在线观看| 亚洲免费婷婷| 亚洲电影免费观看高清| 国产精品videossex久久发布| 欧美伊人久久久久久久久影院| 亚洲成人在线视频网站| 午夜久久久久| 日韩视频免费| 一区在线视频观看| 国产精品啊v在线| 免费成年人欧美视频| 亚洲欧美自拍偷拍| 最新国产乱人伦偷精品免费网站| 欧美在线精品一区| 一本大道av伊人久久综合| 好吊妞这里只有精品| 国产精品高潮呻吟| 欧美成人精品h版在线观看| 午夜视频在线观看一区二区三区| 亚洲国产日韩欧美在线图片| 久久精品综合一区| 亚洲欧美日韩国产精品| 99re6热在线精品视频播放速度| 国产有码一区二区| 国产精品一区二区在线观看不卡 | 久久福利资源站| 一区二区三区日韩欧美精品| 你懂的视频一区二区| 欧美中文字幕视频| 亚洲一区免费在线观看| 一区二区欧美在线观看| 亚洲三级免费| 亚洲欧洲精品天堂一级| 一色屋精品亚洲香蕉网站| 国产婷婷色综合av蜜臀av| 国产精品久久久久久久久久ktv | 欧美国内亚洲| 麻豆成人综合网| 久久久蜜臀国产一区二区| 午夜精品福利一区二区三区av| av不卡在线| 一二美女精品欧洲| 夜夜嗨av一区二区三区| 亚洲精选久久| 亚洲免费成人| 99视频在线精品国自产拍免费观看| 亚洲黄色一区二区三区| 亚洲国产精品久久久久秋霞影院 | 亚洲欧美日本国产有色| 亚洲午夜免费视频| 亚洲一区二区影院| 亚洲欧美日韩天堂| 欧美有码视频| 久久九九精品99国产精品| 久久久久久穴| 欧美成人综合在线| 91久久国产综合久久蜜月精品 | 久久久精品动漫| 鲁大师影院一区二区三区| 欧美电影免费| 亚洲六月丁香色婷婷综合久久| 99国产精品久久久久久久| 在线亚洲免费视频| 欧美亚洲一区| 免费在线亚洲| 国产精品久久久久高潮| 国产亚洲一区二区三区在线观看| 在线成人亚洲| 妖精成人www高清在线观看| 亚洲欧美大片| 麻豆精品在线观看| 亚洲高清不卡一区| 亚洲神马久久| 久久久久国产一区二区三区四区| 亚洲精品国产精品国产自| 亚洲第一在线视频| 亚洲视频香蕉人妖| 久久久一区二区三区| 亚洲三级视频| 欧美影院精品一区| 欧美精品性视频| 国产偷自视频区视频一区二区| 亚洲国产一区二区三区a毛片| 亚洲一区一卡| 免费在线欧美黄色| 亚洲一区免费网站| 欧美成人精品h版在线观看| 国产精品嫩草99a| 亚洲精品黄网在线观看| 欧美一区国产在线| 亚洲激情偷拍| 久久se精品一区二区| 欧美日韩精品三区| 在线精品国精品国产尤物884a| 国产精品99久久久久久人| 免费观看不卡av| 亚洲欧美一区二区视频| 欧美日韩ab| 亚洲精品久久嫩草网站秘色| 久久久久久久999| 久久激情一区| 欧美成人中文字幕|