清理文件

#pragma once
#include <vector>
using std::vector;

// CDlgB 对话框

class CDlgB : public CDialogEx
{
    DECLARE_DYNAMIC(CDlgB)

public:
    CDlgB(CWnd* pParent = NULL);   // 标准构造函数
    virtual ~CDlgB();

// 对话框数据
    enum { IDD = IDD_DIALOG2 };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

    DECLARE_MESSAGE_MAP()
public:
    CString m_strPath;
    CString m_strShow;
    afx_msg void OnBnClickedButton2();
    afx_msg void OnBnClickedButton3();
    void ErgodicFile(TCHAR  szPath[MAX_PATH]);
    vector<CString> m_vecPath;
    CString m_Filter;
};
// DlgB.cpp : 实现文件
//

#include "stdafx.h"
#include "FileCleaner.h"
#include "DlgB.h"
#include "afxdialogex.h"

// CDlgB 对话框

IMPLEMENT_DYNAMIC(CDlgB, CDialogEx)

CDlgB::CDlgB(CWnd* pParent /*=NULL*/)
: CDialogEx(CDlgB::IDD, pParent)
, m_strPath(_T(""))
, m_strShow(_T(""))
, m_Filter(L".txt.cpp.exe")
{

}

CDlgB::~CDlgB()
{
}

void CDlgB::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_strPath);
    DDX_Text(pDX, IDC_EDIT2, m_strShow);
}

BEGIN_MESSAGE_MAP(CDlgB, CDialogEx)
    ON_BN_CLICKED(IDC_BUTTON2, &CDlgB::OnBnClickedButton2)
    ON_BN_CLICKED(IDC_BUTTON3, &CDlgB::OnBnClickedButton3)
END_MESSAGE_MAP()

// CDlgB 消息处理程序

void CDlgB::OnBnClickedButton2()
{
    // TODO:  在此添加控件通知处理程序代码
    TCHAR strPath[MAX_PATH];
    BROWSEINFO bi = {};
    bi.hwndOwner = m_hWnd;
    bi.pszDisplayName = strPath;
    LPCITEMIDLIST   pid =   SHBrowseForFolder(&bi);
    SHGetPathFromIDList(pid, strPath);
    m_strPath = strPath;
    UpdateData(FALSE);
    CoTaskMemFree((LPVOID)pid);
}

void CDlgB::OnBnClickedButton3()
{
    // TODO:  在此添加控件通知处理程序代码
    UpdateData(TRUE);
    ErgodicFile(m_strPath.GetBuffer());
    for (DWORD i = 0; i < m_vecPath.size(); i++)
    {
        m_strShow += m_vecPath[i];
        m_strShow += L"\r\n";
    }
    UpdateData(FALSE);
}

void CDlgB::ErgodicFile(TCHAR  szPath[MAX_PATH])
{
    CString strPath = szPath;
    strPath += L"\\*";
    WIN32_FIND_DATA fi = {};
    HANDLE hFile = FindFirstFile(strPath, &fi);
    if (hFile == INVALID_HANDLE_VALUE)
    {
        return;
    }
    do
    {
        if (!lstrcmp(fi.cFileName, L"." )|| !lstrcmp(fi.cFileName, L".."))
        {
            continue;
        }
        TCHAR *p = PathFindExtension(fi.cFileName);
        if (-1 == m_Filter.Find(p))
        {
            continue;
        }
        if (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            CString strDIr = szPath;
            strDIr += L"\\";
            strDIr += fi.cFileName;
            ErgodicFile(strDIr.GetBuffer());
            continue;
        }
        CString strDIr = szPath;
        strDIr += L"\\";
        strDIr += fi.cFileName;
        m_vecPath.push_back(strDIr);
    } while (FindNextFile(hFile,&fi));

}
时间: 2024-10-28 16:23:36

清理文件的相关文章

用DOS批处理实现FTP自动上传、下载、清理文件

最近好像特别的忙,好久没来写点东西了,今天写了一个利用批处理程序完成FTP自动上传.下载.清理文件的程序.赶紧 记录下来,以备日后之用.功能介绍:自动登录远程主机,并到指定目录下下载文件,下载完成后,检查下载到本地的文件并删除主机上的文件.程序名称及功能:getfile.bat:主程序,检查配置目录及调用ftp脚本.getfile.ftp:ftp运行脚本.movefile.bat:删除远程主机上的文件.以下是批处理的具体内容. 1.getfile.bat内容: @echo off REM 配置基

清理文件的python脚本

由于刚开始在cnblog写博客,发现网页版没法直接贴图片,加上使用的是mac电脑,快捷键直接把图片存到桌子上. 外加下载东西一大堆. 就动手写了个小脚本,然后放到了local bin的文件夹,终于可以减低一些鼠标负担. 代码如下: #!/Users/alex/anaconda/bin/python import os,re,shutil def delMess(path,reStr,flag=0): os.chdir(path) fileList=os.listdir(path) if flag

find结合重定向符清理文件

大家知道,清理日志文件时,如果该文件正在被某进程使用,则系统不会删除,只会标注为deleted(使用lsof|grep deleted可以查看哪些文件被标注为这个状态),所以这部分的磁盘空间不会释放,那么如何在不重启进程的情况下,让空间释放呢?使用重定向符清空文件即可. 假设日志文件为/var/log/tomcat/info.log,则使用命令:  > /var/log/tomcat/info.log 当该目录下有多个文件时,可以结合find查找文件,但是使用下面的命令无效(引起Shell的歧义

iOS 清理文件缓存

本文摘自:<msp的昌伟哥哥-iOS开发-清理缓存功能的实现>摘下来的目的就是为了能够学习.还望看到文章的同学,前往原创的博客园.感谢msp的昌伟哥哥的分享精神. 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类app的标配功能. 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取.删除缓存文件的实现. 获取缓存文件的大小 由于缓存文件存

清理文件2

// FileCleanerDlg.h : 头文件 // #pragma once #include <vector> using std::vector; // CFileCleanerDlg 对话框 class CFileCleanerDlg : public CDialogEx { // 构造 public: CFileCleanerDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_FILECLEANER_DIA

根据正则表达式来清理文件夹

http://www.cnblogs.com/itech/archive/2011/03/22/1991756.html 清除指定目录下的子文件, 只保留与给定的正则表达式匹配且最后创建的N个. 代码: import osimport sysimport reimport shutil def cleanUp(dir, regrex, num):  if not os.path.exists(dir) and not os.path.isdir(dir) :     print 'path %s

Windows定时清理文件处理脚本

一.运行CMD,输入forfile/?,即可获取forfile的使用方法 /P  路径 /M  文件类型 /D  时间   + | -     +:之后    - :之前   example:-2   2天之前的数据 /C  command命令 二.打开记事本,写入如下语句 @echo off forfiles /P "E:\数据库备份" /M *.html /D -2 /C "cmd/c del/F/s/q @file" 这句话的意思是,删除路径:E:\数据库备份

Linux批量清理多个文件内容而不删除文件

清理单个文件,可以这样:echo > myLog.log 但是,如果我要清理一堆文件,比如在/logs目录下面的所有以.log结尾的文件的内容,而不删除文件,该如何操作呢? 我一开始的语句是这样的: find /logs -name "*.log" -exec echo > {} \; 但是,运行的结果是新建了一个名为“{}”的文件,并没有执行清理文件内容的操作. 我询问了大神之后,我的语句是这样的: for i in `find . -name "*.log&q

#批量清理某目录下的文件或移除某目录下的文件

#!/bin/bash  #批量清理某目录下的文件或移除某目录下的文件 basedir=/data/db/renewal/snapshots   #执行目录 clear_before_days=95       #清理的时间,100代表100天前的数据 logdir=/data/log/clear      #日志路径 log=$logdir/clear.log      #日志文件 file_key="snapshot"       #清理文件包含关键字 is_font=1