VC删除文件夹操作代码

VS删除文件夹

//功能: 删除非空目录文件夹

//输入: DirName 文件夹名

//输出: 删除是否成功

//功能: 迭代文件夹内文件,一个一个删除

BOOL DeleteDirectory(char *DirName)

{

CFileFind tempFind;

char tempFileFind[200];

sprintf(tempFileFind,"%s\.",DirName);

BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);

while(IsFinded)

{

IsFinded=(BOOL)tempFind.FindNextFile();

if(!tempFind.IsDots())

{

char foundFileName[200];

strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));

if(tempFind.IsDirectory())

{

char tempDir[200];

sprintf(tempDir,"%s\%s",DirName,foundFileName);

DeleteDirectory(tempDir);

}

else

{

char tempFileName[200];

sprintf(tempFileName,"%s\%s",DirName,foundFileName);

DeleteFile(tempFileName);

}

}

}

tempFind.Close();

if(!RemoveDirectory(DirName))

{

MessageBox("删除目录失败!","警告信息",MB_OK);

return FALSE;

}

return TRUE;

}

---------------------------------------------------------记录

void CDeletefileDlg::OnBtnok() //单一文件选择框

{

// TODO: Add your control notification handler code here

CFileDialog file(true);

CString str;

if (IDOK==file.DoModal())

{

// str=file.GetFileName();

str=file.GetPathName();

}

SetDlgItemText(IDC_FILENAME,str);

}

void CDeletefileDlg::OnBtndelete() //删除单一文件

{

// TODO: Add your control notification handler code here

CString cstr;

GetDlgItemText(IDC_FILENAME,cstr);

CFile::Remove(cstr);

SetDlgItemText(IDC_FILENAME,"");

MessageBox(cstr+"已删除成功!");

}

void CDeletefileDlg::OnBtndirtest() //文件夹选择框

{

// TODO: Add your control notification handler code here

BROWSEINFO bi; //定义文件浏览对象

char buffer[MAX_PATH]; //定义字符缓冲区

ZeroMemory(buffer,MAX_PATH); //初始化字符缓冲区

bi.hwndOwner=GetSafeHwnd();

bi.pidlRoot=NULL;

bi.pszDisplayName=buffer;

bi.lpszTitle="请选择一个文件夹"; //设置浏览框标题

bi.ulFlags=BIF_EDITBOX;

bi.lpfn=NULL;

bi.lParam=0;

bi.iImage=0;

LPITEMIDLIST pList=NULL;

if ( (pList=SHBrowseForFolder(&bi)) != NULL ) //弹出浏览框对话框

{

char path[MAX_PATH];

ZeroMemory(path,MAX_PATH);

SHGetPathFromIDList(pList,path); //获取用户目录

GetDlgItem(IDC_DIR)->SetWindowText(path);

}

}

void CDeletefileDlg::OnBtndel() //目录删除函数

{

// TODO: Add your control notification handler code here

GetDlgItemText(IDC_DIR,filestr);

delDirFile(filestr); //删除目录下的所有文件

SetDlgItemText(IDC_DIR,"");

RemoveDirectory(filestr); //删除空目录

MessageBox(filestr+"目录已经完全删除!");

}

void CDeletefileDlg::delDirFile(CString spath) //删除目录下的所有文件函数

{

CFileFind find;

BOOL bworking=find.FindFile(spath+"\.");

while (bworking)

{

bworking=find.FindNextFile();

CString filename=find.GetFileName();

if (find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY))

{

if ( (filename!=".") && (filename != "..") ) //滤过 . 和 .. 文件夹

{

delDirFile(spath+"\"+filename);

}

}

else

{

CFile::Remove(spath+"\"+filename); //如果不是文件夹 直接删除

}

RemoveDirectory(spath+"\"+filename); //

}

}

void CDeletefileDlg::finddir(CString findpath) //查找根目录下的所有子文件

{

CString deldir;

GetDlgItemText(IDC_DELDIRNAME,deldir);

CFileFind find;

CString filename,tempstr,filepath;

BOOL bworking=find.FindFile(findpath+"\.");

while(bworking)

{

bworking=find.FindNextFile();

filepath=find.GetFilePath();

filename=find.GetFileName();

tempstr=filename.Right(5);

if ((deldir==tempstr) && find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY))

{

delDirFile(filepath);

RemoveDirectory(filepath);

}

else if( (filename!=".") && (filename != "..") && find.MatchesMask(FILE_ATTRIBUTE_DIRECTORY) ) //这里的递归有问题

{

finddir(findpath+"\"+filename);

}

}

find.Close();

}

void CDeletefileDlg::OnDeldebug() //删除特定的文件夹函数

{

// TODO: Add your control notification handler code here

CString path;

GetDlgItemText(IDC_DIR,path);

CString childpath;

GetDlgItemText(IDC_DELDIRNAME,childpath);

finddir(path);

SetDlgItemText(IDC_DIR,"");

SetDlgItemText(IDC_DELDIRNAME,"");

MessageBox(path+"下的所有"+childpath+"已经全部删除!");

}

----------------------------------------记录2

//删除文件夹目录(非空)

bool DeleteDirectory(char* sDirName)

...{

CFileFind tempFind;

char sTempFileFind[200] ;

sprintf(sTempFileFind,"%s*.*",sDirName);

BOOL IsFinded = tempFind.FindFile(sTempFileFind);

while (IsFinded)

...{

IsFinded = tempFind.FindNextFile();

if (!tempFind.IsDots())

...{

char sFoundFileName[200];

strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));

if (tempFind.IsDirectory())

...{

char sTempDir[200];

sprintf(sTempDir,"%s\%s",sDirName,sFoundFileName);

DeleteDirectory(sTempDir);

}

else

...{

char sTempFileName[200];

sprintf(sTempFileName,"%s\%s",sDirName,sFoundFileName);

DeleteFile(sTempFileName);

}

}

}

tempFind.Close();

if(!RemoveDirectory(sDirName))

...{

return FALSE;

}

return TRUE;

}

/**//////////////////////////////////////////

//下面是应用,CString m_strDir 是一个文件夹路径,如:d:downloadpic

BOOL DelAll()

...{

if(PathFileExists(m_strDir))

DeleteDirectory((LPSTR)(LPCTSTR)m_strDir);

return 1;

}

原文地址:https://blog.51cto.com/14226273/2380210

时间: 2024-10-21 23:18:37

VC删除文件夹操作代码的相关文章

BAT批处理之文件与文件夹操作代码(附xcopy命令详解)

批处理中的文件.文件夹操作,xcopy命令的用法. 一,建bat文件自动执行复制,删除命令. 例1:复制cd.dll文件至windows\system32的bat文件内容: copy cd.dll %windir%\system32 例2:卸载windows\system32目录中的cd.dll,即把上面复制的文件删除: del %windir%\system32\cd.dll 例3:删除download文件夹中的文件,例子如下: del C:\DOWNLOAD\*.* 注意,以处的del命令只

Android删除文件夹的代码实现

//删除文件夹 private void deleteDirectory(File folder) { if (folder.exists()) { File[] files = folder.listFiles(); if (files == null) { return; } for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteDirectory(files[i]); } else { fi

删除文件、删除文件夹操作

/** * 删除单个文件 * * @param sPath * 被删除文件的路径+文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String sPath) { Boolean flag = false; File file = new File(sPath); // 路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.del

Android得到SD卡文件夹大小以及删除文件夹操作

float cacheSize = dirSize(new File(Environment.getExternalStorageDirectory() + AppConstants.APP_CACHE_FOLDER)) / 1024.0f / 1024.0f; tvCacheSize.setText(((int) (cacheSize * 100)) / 100.0f + "M"); /** * Return the size of a directory in bytes */ p

删除文件夹操作

目录不能删除 rm -rf 1删除:-r是递归处理,就是一层一层的删:-f是强制删除. 执行命令rm –rf 1就可以实现对目录1的删除操作 原文地址:http://blog.51cto.com/hifon/2133717

php 删除文件夹的实现代码

php没有一个具体的删除文件夹方法,下面是我自己的一段关于删除文件夹的代码: /** * 删除文件目录 * @param unknown $dir * @return boolean */ function deldir($dir) { //先删除目录下的文件: //chmod($dir,0777); $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!=".."

nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

http://blog.163.com/hule_sky/blog/static/2091622452015112821829773/ node 文件系统fs 为我们提供了一些方法 进行文件和文件夹的读写删除等操作 下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法) 1. fs.stat && fs.statSync 提供了访问文件的属性信息 2. fs.readdir && fs.readdirSync 提供读取文件目录信息 3. fs.unli

java创建和删除文件夹及文件

//新建一个文件夹 public void newFolder(String folderPath) { try { String filePath = folderPath; File myFilePath = new File(filePath); if (!myFilePath.exists()) { myFilePath.mkdir(); } } catch (Exception e) { System.out.println("新建文件夹操作出错"); e.printStac

Java 代码完成删除文件、文件夹操作

import java.io.File; /** * 删除文件和目录 * * @author chen * */ public class DeleteFileUtil { /** * 删除文件,可以是文件或文件夹 * * @param fileName * 要删除的文件名 * @return 删除成功返回true,否则返回false */ public static boolean delete(String fileName) { File file = new File(fileName)