文件和回收站操作(四)

 

文件和回收站操作()
本文講述一些文件的基本操作,例如:文件夾的創建和刪除,刪除文件到回收站中,清空回收站,搜索文件,查找文件是否存在等。
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"
下次再接着講一些文件的其他操作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章