Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514427
  • 博文数量: 158
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1711
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-27 14:00
文章分类

全部博文(158)

文章存档

2010年(71)

2009年(87)

我的朋友

分类: WINDOWS

2009-10-15 02:18:30

其实windows系统编程也不是太难, 比如说这个, 挺有意思的:
引用作者的一段话:
在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LOG数据定期删除掉。要实现这个功能就得遍历整个目录,把文件名称和文件创建的时间都超过6个月时间的文件删除掉。因此,就需使用到下面的API函数FindFirstFileFindNextFile来实现这样的功能,FindFirstFile函数是查找到目录下的第一个文件或目录,FindNextFile函数是查找下一文件或目录。
 
且看代码:
find.h:
 
 

#pragma once
#include <windows.h>
#include <winbase.h>

class CFindFile {
 protected:
  HANDLE m_hFind;
  bool m_bFound;
  WIN32_FIND_DATA m_FindFileData;
 public:
  CFindFile() {
    m_hFind = INVALID_HANDLE_VALUE;
    m_bFound = false;
    memset(&m_FindFileData, 0, sizeof(m_FindFileData));
  }

  ~CFindFile(void) {
    if(m_hFind != INVALID_HANDLE_VALUE) {
      ::FindClose(m_hFind);
    }
  }

  void First(LPCTSTR lpFileName) {
    m_hFind = ::FindFirstFile(lpFileName, &m_FindFileData);
    if(m_hFind != INVALID_HANDLE_VALUE)
      m_bFound = true;
    else
      m_bFound = false;
  }

  void Next() {
    m_bFound = FindNextFile(m_hFind, &m_FindFileData) ? true : false;
  }

  bool isOk() const {
    return m_bFound;
  }

  const WIN32_FIND_DATA& GetCurFile() {
    return m_FindFileData;
  }
};

驱动文件:

find.cpp:


 

#include <windows.h>
#include <winbase.h>
#include <tchar.h>
#include <iostream>
#include "find.h"
using namespace std;

int main(int argc, LPTSTR argv[]) {
  CFindFile findDemo;
  for(findDemo.First(_T("c:/Downloads/*"));
      findDemo.isOk();
      findDemo.Next()) {
    OutputDebugString(findDemo.GetCurFile().cFileName);
    OutputDebugString(_T("\r\n"));
    cout << findDemo.GetCurFile().cFileName
        << "\t" << findDemo.GetCurFile().nFileSizeLow / 1024.0 / 1024.0 << "MB" << endl;

  }
}

 

运行结果:

.       0MB
..      0MB
NokiaSoftwareUpdaterSetup_zh_cn.exe     23.3629MB
WinDjView-1.0.3-Setup.exe       3.29331MB
中国不高兴.doc  0.360352MB
cryes_setup.exe 4.37286MB
myfiles_meihuabao_v10.zip       5.2649MB
EasyRecovery6.rar       27.8942MB
MformatV1.00.zip        0.268638MB
20090712094958434.rar   0.130648MB
flashget_16372_1.exe    4.51773MB
lunwen.doc      1.69971MB
waybackintolovedemo.mp3 5.77096MB
FirefoxChinaEdition-latest.exe  8.56723MB
freebsd.doc     0.615234MB
pplivesetup_black_0024.exe      9.74189MB
jdwb_setup7_preview.rar 6.27772MB
1.exe   13.525MB
请按任意键继续. . .

阅读(2099) | 评论(0) | 转发(0) |
0

上一篇:GetFileSize学习

下一篇:freebsd快速入门

给主人留下些什么吧!~~