文件和回收站操作(四)
本文講述一些文件的基本操作,例如:文件夾的創建和刪除,刪除文件到回收站中,清空回收站,搜索文件,查找文件是否存在等。
1. 創建一個對話框工程:FolderAndFile。
2. 添加一個按鈕爲創建文件夾,代碼如下:
charbuf[256];
::GetCurrentDirectory(256,buf);
m_FolderName.GetWindowText(name);
strcat(buf,"//");
strcat(buf,name);
if(CreateDirectory(buf,NULL))
{
MessageBox("文件夾創建成功!");
return;
}
else
{
MessageBox("文件夾創建失敗,已經存在!");
return;
}
添加一個按鈕爲刪除文件夾,代碼如下:
charbuf[256];
::GetCurrentDirectory(256,buf);
m_FolderName.GetWindowText(name);
strcat(buf,"//");
strcat(buf,name);
if(RemoveDirectory(buf))
{
MessageBox("文件夾刪除成功!");
return;
}
else
{
MessageBox("文件夾刪除失敗,文件不存在!");
return;
}
其中:m_FolderName爲輸入要創建文件夾名稱的文本框對應變量。
3. 將文件刪除到回收站以及清空回收站
添加一個按鈕爲“瀏覽文件”,代碼如下:
CFileDialogfile(true,NULL,NULL,OFN_HIDEREADONLY|OFN_HIDEREADONLY,"All Files(*.*)|*.*||",AfxGetMainWnd());
if(file.DoModal() == IDOK)
{
name = file.GetPathName();
m_BrowseFile.SetWindowText(name);
}
其中:m_BrowseFile爲一個顯示瀏覽到要刪除文件的文本框對應變量。
添加一個按鈕爲“刪除”,即刪除一個文件到回收站,如下:
charfilename[100] = "/0";
strcpy(filename,name);
strcat(filename,"/0");
SHFILEOPSTRUCTshfile;
shfile.hwnd = 0;
shfile.wFunc = FO_DELETE;
shfile.pFrom = filename;
shfile.pTo = NULL;
shfile.fFlags = FOF_ALLOWUNDO;
shfile.hNameMappings = NULL;
shfile.lpszProgressTitle = NULL;
SHFileOperation(&shfile);
其中:CStringstrfilename; CStringname;
添加一個按鈕爲“清空回收站”,代碼如下:
GetWindowLong(m_hWnd,0);
SHEmptyRecycleBin(m_hWnd,NULL,SHERB_NOCONFIRMATION||SHERB_NOPROGRESSUI||SHERB_NOSOUND);
MessageBox("回收站已清空!");
4. 搜索文件,添加一個按鈕爲“瀏覽”,代碼如下:
BROWSEINFObi;
charbuffer[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;
LPITEMIDLISTpList = NULL;
if((pList=SHBrowseForFolder(&bi))!=NULL)
{
charpath[MAX_PATH];
ZeroMemory(path,MAX_PATH);
SHGetPathFromIDList(pList,path);
GetDlgItem(IDC_BROWSE_FILE)->SetWindowText(path);
}
添加一個按鈕爲“查找”,如下:
CStringstrpath;
GetDlgItem(IDC_FILE_NAME_EDIT)->GetWindowText(strfilename);
GetDlgItem(IDC_BROWSE_FILE)->GetWindowText(strpath);
FindFile(strpath);
bstop = FALSE;
添加一個函數,如下:
voidCFolderAndFileDlg::FindFile(CStringstrPath)
{
CStringstrTemp;
if(strPath.Right(1)!= "//")
strTemp.Format("%s//*.*",strPath);
else
strTemp.Format("%s*.*",strPath);
CFileFindfindfile;
BOOLbfind = findfile.FindFile(strPath);
while(bfind)
{
bfind = findfile.FindNextFile();
if(strfilename == findfile.GetFileName())
{
m_filelist.AddString(findfile.GetFilePath());
}
if(findfile.IsDirectory()&&!findfile.IsDots())
{
FindFile(findfile.GetFilePath());
}
if(bstop) return;
}
}
其中:m_filelist爲一個顯示文件的列表控件對應變量。
5. 判斷一個文件是否存在,添加一個按鈕“是否存在”,代碼如下:
UpdateData(TRUE);
inti;
if((i = open(m_fileExit,_O_RDONLY)) < 0)
{
MessageBox("文件不存在!");
}
else
{
MessageBox("文件已經存在!");
return;
}
_lclose(i);
其中:m_fileExit爲輸入的要判斷的文件的文本框控件對應變量。
要包含:#include "io.h"
#include "fcntl.h"
下次再接着講一些文件的其他操作。