美文网首页Java 杂谈
VC删除文件夹操作代码

VC删除文件夹操作代码

作者: Java架构学习者 | 来源:发表于2019-04-17 15:54 被阅读0次

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;

}

相关文章

  • VC删除文件夹操作代码

    VS删除文件夹 //功能: 删除非空目录文件夹 //输入: DirName 文件夹名 //输出: 删除是否成功 /...

  • C++新手学习实例:创建和删除文件夹

    VC++ 创建和删除文件夹 新手学习实例,新建目录的例子源码,还可删除目录、删除文件夹等操作,在运行的winFor...

  • node 递归删除指定文件夹下的所有文件

    node 里边可以删除文件、文件夹、但不能删除带文件的文件夹,如下代码:先删除掉文件夹下的文件,最后再删除文件夹,...

  • java代码删除文件夹

    java用代码删除文件夹

  • python中的文件操作-新建与删除

    常见的文件操作 新建文件夹,新建文件,删除文件夹,删除文件 完成以上操作需要引入以下标准库 新建文件夹 新建文件 ...

  • flutter在moudle中的问题

    flutter moudle中由于写错代码或者其他操作会导致.android文件夹中一些内容被删除。这个时候运行会...

  • Linux 常用命令

    1、文件操作 删除文件夹rm -rf /var/www/html/filename删除文件使用实例:将会强制删除/...

  • git删除本地和远程文件

    注意 要删除文件必须先添加到仓库才可以进行上述操作命令,因为git基于仓库进行操作。 删除文件夹时,文件夹不能为空...

  • git 指南

    git 操作文件:mkdir test //创建test文件夹 rm -rf test //删除文件夹 ...

  • Linux 常用命令

    日常操作命令 文件系统操作 查看目录信息 切换目录 创建文件夹 删除文件夹 修改文件夹名称 创建文件 利用 vi ...

网友评论

    本文标题:VC删除文件夹操作代码

    本文链接:https://www.haomeiwen.com/subject/rlynwqtx.html