EVC下文件夹/文件操作

//========================================================================
//TITLE:
//    EVC实现拷贝文件夹下所有文件
//AUTHOR:
//    norains
//DATE:
//    Wednesday  17-May-2006
//========================================================================


在EVC下实现将某文件夹下的所有文件(包括文件夹)拷贝到另一个文件夹中.算法不复杂,简单实用.
//szExistingDir:源文件夹
//szNewDir:目标文件夹
//注意:目标文件夹必须要存在,否则该函数将返回FALSE.
BOOL BrowseAndCopy(const CString szExistingDir, const CString szNewDir)

 CString szExistDir; //保存源文件夹路径
 CString szAimDir=szNewDir; //保存目标文件夹路径

 CString szFindDir=szExistingDir;
 if(szFindDir.Right(1)!="//")
 {
  szFindDir+="//";
  szExistDir=szFindDir;
 }
 szFindDir+="*.*"; //搜索所有文件

 WIN32_FIND_DATA fd;
 HANDLE hFind;
 hFind=FindFirstFile(szFindDir,&fd); //寻找第一个文件
 if(hFind!=INVALID_HANDLE_VALUE)
 {
  do{
   if(fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) //判断是否文件夹
   {    
    if(szAimDir.Right(1)!="//")
    {
     szAimDir+="//";
    }
    CreateDirectory(szAimDir+fd.cFileName,NULL); //在目标文件夹中创建相应的子文件夹
    BrowseAndCopy(szExistDir+fd.cFileName,szAimDir+fd.cFileName); //采用递归查找子文件下的文件
   }
   else
   {     
    if(szAimDir.Right(1)!="//")
    {
     szAimDir+="//";
    }
    
    if(CopyFile(szExistDir+fd.cFileName,szAimDir+fd.cFileName,FALSE)==FALSE) //拷贝文件到目标文件夹
    {
     return FALSE;
    }
       
   }

  }while(FindNextFile(hFind,&fd)); //查找是否存在下一个文件
 }
 else
 {
   //源文件夹为空,返回
  return FALSE;
 }

 return TRUE;


}

 

 

//========================================================================
//TITLE:
//    EVC获取当前工作路径
//AUTHOR:
//    norains
//DATE:
//    Wednesday  17-May-2006
//MARK:
//  非常感谢同事老张提供此段代码!
//========================================================================
在EVC下没有GetCurrentDirectory()这个函数能方便地获取当前工作路径,所以我们只能通过GetModuleFileName()函数的返回值来获取当前的工作路径.
//szPath:获取的当前工作路径
void GetCurrentDirectory(CString &szPath)
{
 wchar_t pBuf[256];
 GetModuleFileName(NULL,pBuf,sizeof(pBuf)/sizeof(wchar_t));
 szPath=pBuf;
 szPath = szPath.Left(szPath.ReverseFind('//')+1);
}

 

 

//========================================================================
//TITLE:
//    EVC隐藏任务栏
//AUTHOR:
//    norains
//DATE:
//    Wednesday  17-May-2006
//========================================================================
 任务栏在WinCE下的类名是"HHTaskBar",可以使用FindWindow()函数获取其句柄,然后用ShowWindow()即可对其隐藏.
  例如:
 HANDLE hTaskBar;
 hTaskBar = FindWindow(TEXT("HHTaskBar"), NULL);  //搜寻任务栏句柄 
 ShowWindow(hTaskBar, SW_HIDE); //隐藏
 ShowWindow(hTaskBar, SW_SHOWNORMAL); //显示
 那如何判断一个窗口是否隐藏呢?可以调用IsWindowVisible(),如果返回值为FALSE,则窗口肯定隐藏.
 例如:
 if(IsWindowVisible(hTaskBar)==FALSE)
 {
  //如果任务栏隐藏,就把任务栏显示出来
  ShowWindow(hTaskBar, SW_SHOWNORMAL)
 }

 

 

CFile文件读写

//SP-A1文件写入及读取
 //创建文件2
  CFile file;
  if(file.Open(L"test1.TXT",CFile::modeReadWrite))
  {
//   MessageBox(L"File Open Success");
  }
  else
  {
   file.Open(L"test1.TXT",CFile::modeCreate | CFile::modeReadWrite);
//   MessageBox(L"not exist to create");
  }


        //定义读写缓冲区
  TCHAR buffer[]=L"a"; //4个字节
  TCHAR buffer_r[]=L"";
/*  
  //SP-A2文件写入
  file.Write(buffer,sizeof(buffer));
  file.Close(); //文件用完必须关闭,否则下次无法操作
*/

/*
  //文件长度
  DWORD dwBytesRemaining = file.GetLength();
  _itow(dwBytesRemaining,buffer_r,10);
*/

  //SP-A3文件读入,要读取,就要把前面的写入去掉,否则会无法读取
  file.Read(buffer_r,4);
  MessageBox(buffer_r);
  file.Close(); //文件用完必须关闭,否则下次无法操作
/*
 //写文本,失败
 RECT rect;
    GetClientRect (&rect);

 HDC hdc;
 hdc = (HDC)GetDC();

 ExtTextOut(hdc,0,0,0,NULL,L"aa",lstrlen(L"aa"),NULL);
*/

 

 

 

 

打开或创建文件(mfc &API)

 

 //SP-A1用CFile来创建文件
 CFile file;
 if(file.Open(L"test1.TXT",CFile::modeReadWrite))
 {
  MessageBox(L"Open File OK");
 }
 else
 {
  file.Open(L"test1.TXT",CFile::modeCreate | CFile::modeReadWrite);
  MessageBox(L"File not exist to create");
 }

 /*
  //SP-A2创建文件2用CreateFile创建文件
  HANDLE g_hFile = 0;                  // Handle to the opened file
  g_hFile = CreateFile(L"test.txt",GENERIC_READ | GENERIC_WRITE,
                          FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
*/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值