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

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>
              黄色成人在线免费| 亚洲一区二区三区精品动漫| 亚洲国产毛片完整版| 久久一区二区三区av| 亚洲成色777777女色窝| 亚洲区一区二区三区| 欧美区视频在线观看| 一区二区三区视频在线观看| 久久不见久久见免费视频1| 一区在线观看视频| 欧美成人激情视频| 野花国产精品入口| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲精品小视频在线观看| 欧美日韩免费观看中文| 午夜精品久久久| 欧美大片在线观看| 亚洲一区二区动漫| 国产亚洲在线| 欧美国产综合一区二区| 亚洲一区免费网站| 欧美91福利在线观看| 一区二区三区日韩欧美精品| 国产乱码精品一区二区三区忘忧草| 久久午夜影视| 亚洲天堂网站在线观看视频| 久久综合网络一区二区| 正在播放欧美视频| 激情小说另类小说亚洲欧美| 欧美日韩精品久久久| 午夜精品久久| 亚洲精品久久7777| 久久夜色精品国产| 亚洲免费中文| 亚洲精品乱码久久久久久日本蜜臀| 国产精品视频99| 欧美区高清在线| 久久嫩草精品久久久精品| 一区二区三区色| 亚洲电影在线看| 久久久久国产成人精品亚洲午夜| 一区二区高清在线观看| 亚洲丰满少妇videoshd| 国产视频精品xxxx| 欧美午夜在线视频| 欧美激情精品久久久久久| 久久久噜噜噜久久久| 亚洲一区二区三区精品视频| 亚洲老司机av| 亚洲国产精品成人va在线观看| 久久av最新网址| 午夜精品视频一区| 一区二区久久久久| 日韩视频第一页| 亚洲激情亚洲| 在线观看精品一区| 狠狠色丁香久久综合频道| 国产精品区免费视频| 欧美日韩在线亚洲一区蜜芽| 欧美激情导航| 欧美电影美腿模特1979在线看| 久久久久久久国产| 久久国产精品高清| 欧美一区二区三区在线| 亚洲欧美在线x视频| 亚洲尤物视频在线| 亚洲一区二区久久| 亚洲欧美日韩国产综合在线| 一区二区三区欧美在线观看| 99精品欧美一区二区三区综合在线 | 亚洲综合大片69999| 亚洲天堂av高清| 亚洲午夜免费福利视频| 在线亚洲伦理| 亚洲一区在线看| 午夜精品理论片| 欧美在线免费播放| 久久不见久久见免费视频1| 欧美一区2区三区4区公司二百| 亚洲欧美日韩系列| 久久超碰97中文字幕| 久久精品国产精品亚洲综合| 久久九九99| 免费亚洲婷婷| 欧美麻豆久久久久久中文| 欧美日韩精品| 国产精品尤物| 激情成人综合网| 亚洲日本视频| 亚洲先锋成人| 久久国产毛片| 欧美成人一区在线| 日韩视频一区二区在线观看| 亚洲五月六月| 久久免费精品视频| 欧美精品免费播放| 国产精品嫩草久久久久| 国产主播一区| 亚洲毛片av在线| 午夜一区二区三视频在线观看 | 中日韩美女免费视频网址在线观看 | 久久免费国产精品1| 欧美国产视频一区二区| 国产精品第一页第二页第三页| 国产欧美精品va在线观看| 在线观看的日韩av| 国产精品99久久99久久久二8| 午夜一区二区三区不卡视频| 老司机67194精品线观看| 亚洲区在线播放| 亚洲女与黑人做爰| 老司机成人在线视频| 欧美性猛交xxxx免费看久久久| 国产人成一区二区三区影院| 亚洲激情视频| 欧美一区二视频| 亚洲国产精品久久久久久女王| 亚洲一区二区三区在线| 久久在线视频在线| 国产精品久久久久久久久久三级| 黄色综合网站| 亚洲欧美日韩在线观看a三区| 久久久久久夜| 一本色道久久综合狠狠躁篇的优点 | 亚洲精品免费在线播放| 欧美在线播放视频| 亚洲日本中文字幕| 久久久欧美一区二区| 国产精品乱码人人做人人爱| 亚洲人成网站在线观看播放| 久久久久久**毛片大全| 99亚洲视频| 免费日韩一区二区| 韩国一区二区三区在线观看| 亚洲一级高清| 91久久亚洲| 麻豆久久精品| 黄色小说综合网站| 欧美伊人久久大香线蕉综合69| 亚洲精品视频在线播放| 久热精品视频在线观看一区| 国产亚洲第一区| 亚洲欧美综合国产精品一区| 亚洲精品免费电影| 每日更新成人在线视频| 一区二区在线看| 久久精品在线免费观看| 亚洲在线中文字幕| 国产精品videossex久久发布| 亚洲日本成人网| 免费亚洲婷婷| 久久裸体艺术| 国内自拍亚洲| 久久人人看视频| 欧美一区国产在线| 国产视频一区二区三区在线观看| 亚洲自拍偷拍色片视频| 99精品欧美一区| 国产精品扒开腿爽爽爽视频| 亚洲视频在线观看免费| 亚洲美女尤物影院| 欧美日韩国产91| 亚洲图片在线观看| 国产精品99久久久久久久vr| 欧美日韩亚洲一区二| 99热这里只有成人精品国产| 亚洲国产成人精品女人久久久| 免费美女久久99| 亚洲乱码国产乱码精品精98午夜| 亚洲国产电影| 欧美日韩国产精品专区 | 欧美亚洲综合网| 午夜精品成人在线| 韩国av一区二区三区四区| 麻豆久久婷婷| 美女网站在线免费欧美精品| 最新亚洲电影| 亚洲免费成人| 国产精品成人国产乱一区| 亚洲欧美日韩天堂一区二区| 欧美一区二区精品| 在线欧美电影| 亚洲福利视频一区二区| 欧美日本在线视频| 午夜亚洲一区| 久久久久久久久久看片| 亚洲区在线播放| 一区二区日韩精品| 国产亚洲成av人在线观看导航 | 欧美日韩免费在线观看| 亚洲欧美国产一区二区三区| 性欧美暴力猛交69hd| 亚洲国产精品va在看黑人| 亚洲久久在线| 国产欧美在线视频| 欧美激情精品久久久久久蜜臀| 欧美日韩国产麻豆| 久久久99爱| 欧美精品日韩| 久久久久久亚洲精品中文字幕|