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

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>
              亚洲国产影院| 欧美一区二区三区的| 久久国产主播精品| 欧美亚洲免费电影| 久久精品国产精品| 欧美一区二区三区四区在线 | 亚洲日本中文字幕区| 亚洲国产精品一区二区第一页| 久久中文字幕导航| 一本大道av伊人久久综合| 亚洲视频中文| 国产视频在线观看一区二区三区| 麻豆久久久9性大片| 欧美激情欧美激情在线五月| 亚洲综合色激情五月| 欧美一区二区三区精品电影| 91久久国产综合久久91精品网站 | 欧美一区二区三区久久精品| 久久精品国产亚洲高清剧情介绍| 亚洲激情av| 亚洲欧美电影院| 亚洲激情图片小说视频| 在线综合亚洲欧美在线视频| 亚洲电影观看| 亚洲一区日本| 亚洲精品乱码久久久久久蜜桃麻豆| 一区二区日本视频| 亚洲国产欧美日韩精品| 亚洲欧美视频在线| 夜夜嗨av色一区二区不卡| 久久成人18免费网站| 中文欧美在线视频| 卡通动漫国产精品| 久久精品1区| 欧美三区在线视频| 欧美韩日一区二区三区| 国产一区二区三区久久精品| 99国产精品久久久久老师| 在线播放豆国产99亚洲| 亚洲欧美经典视频| 亚洲一区二区三区四区视频| 蜜臀a∨国产成人精品| 久久精品一区二区国产| 国产精品久久77777| 亚洲国产精品一区在线观看不卡| 黄色小说综合网站| 亚洲欧美综合一区| 亚洲综合精品| 欧美日韩不卡一区| 亚洲激情一区二区三区| 在线色欧美三级视频| 欧美在线观看一区二区| 久久成人av少妇免费| 欧美性猛交xxxx乱大交蜜桃| 最近中文字幕mv在线一区二区三区四区 | 久久激情网站| 久久综合伊人| 精品白丝av| 久久久午夜精品| 葵司免费一区二区三区四区五区| 国产欧美一区二区三区久久 | 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 最新亚洲一区| 夜夜狂射影院欧美极品| 欧美精品久久一区| 99pao成人国产永久免费视频| 日韩视频在线一区二区三区| 欧美成人自拍| 99国产精品国产精品毛片| 中国成人黄色视屏| 国产精品免费一区二区三区观看| 亚洲一区二区三区在线视频| 欧美一区二区三区免费大片| 国产亚洲精久久久久久| 久久精品99久久香蕉国产色戒| 老司机久久99久久精品播放免费| 亚洲电影在线免费观看| 蜜臀va亚洲va欧美va天堂| 亚洲国产精品一区| 亚洲午夜精品久久| 国产日韩欧美一区| 久久影视三级福利片| 最近看过的日韩成人| 午夜电影亚洲| 在线观看成人av电影| 欧美黄色aa电影| 亚洲欧美bt| 欧美大秀在线观看| 亚洲一区二区三区涩| 国产午夜久久| 欧美激情偷拍| 性一交一乱一区二区洋洋av| 欧美高清你懂得| 亚洲欧美日本国产有色| 樱桃视频在线观看一区| 欧美理论电影在线观看| 午夜精品视频在线观看一区二区| 欧美1区2区视频| 亚洲欧美日韩在线播放| 亚洲电影一级黄| 国产精品视频免费在线观看| 美腿丝袜亚洲色图| 午夜精品剧场| 亚洲美女在线一区| 久久亚洲精品中文字幕冲田杏梨| 在线午夜精品| 亚洲国产精品一区| 国产欧美一区二区精品秋霞影院| 欧美精品日韩综合在线| 久久嫩草精品久久久精品| 一区二区三区高清| 亚洲福利在线看| 久久久欧美精品| 西瓜成人精品人成网站| 99热在线精品观看| 1024亚洲| 精品不卡一区| 国产主播精品在线| 国产女优一区| 国产精品久久网站| 欧美日韩国产综合视频在线观看| 久久综合久久久久88| 性久久久久久久| 亚洲一区二区在线看| 妖精视频成人观看www| 亚洲欧洲一区二区三区久久| 嫩草伊人久久精品少妇av杨幂| 欧美一区二区三区在线| 亚洲综合欧美| 亚洲男人天堂2024| 亚洲一级影院| 亚洲男人第一网站| 亚洲欧美日韩国产一区| 亚洲综合首页| 亚洲欧美一区二区精品久久久| 亚洲视频一二区| 亚洲一区二区三区涩| 亚洲一区二区伦理| 亚洲免费影院| 欧美一区二区三区四区夜夜大片| 亚洲免费在线视频| 欧美一区二区三区视频免费| 欧美一级欧美一级在线播放| 欧美中文字幕不卡| 久久成人精品电影| 久久一区二区三区超碰国产精品| 久久免费一区| 欧美电影免费观看高清完整版| 欧美激情精品久久久久久黑人| 欧美高清在线观看| 亚洲日本成人| 中文一区二区| 欧美一区二区三区四区在线观看地址| 欧美一区国产二区| 久久最新视频| 欧美另类极品videosbest最新版本| 欧美理论电影网| 国产欧美日韩在线观看| 精品88久久久久88久久久| 亚洲片在线观看| 亚洲一区二区三区中文字幕| 欧美在线不卡视频| 亚洲日韩视频| 久久久人人人| 欧美成人性生活| 欧美日韩一区二区欧美激情| 国产精品久久激情| 韩国v欧美v日本v亚洲v| 亚洲精品色婷婷福利天堂| 亚洲一区二区三区四区五区黄| 久久国内精品视频| 亚洲国产精品第一区二区三区| 亚洲精品在线免费| 欧美诱惑福利视频| 欧美成人首页| 国产欧美亚洲一区| 9i看片成人免费高清| 欧美在线亚洲在线| 亚洲三级网站| 欧美在线观看视频在线| 欧美日韩精品一区二区| 国产一区视频网站| 99视频一区二区| 久久综合网络一区二区| 正在播放欧美一区| 牛人盗摄一区二区三区视频| 国产精品一区二区视频| 亚洲精品国产精品乱码不99| 久久精品国产2020观看福利| 亚洲人成在线播放网站岛国| 久久精品国产99国产精品澳门| 欧美日韩免费一区二区三区| 激情视频亚洲| 久久精品电影| 一区二区欧美激情| 欧美精品v国产精品v日韩精品| 在线不卡中文字幕| 久久久国产精品亚洲一区| 在线综合亚洲欧美在线视频| 欧美成人国产一区二区|