遍历/删除文件夹文件实例

将【 C:\\Users\\HDaniel\\Desktop\\br 】文件夹下的所有jpg图片文件缩放到高度为100像素,再保存到工程目录下。

    
    
遍历文件夹:
#include <io.h>
#include <Windows.h>
#include <ctime>
#include <fstream>
#include<iostream>
#include "string.h"
#include <opencv2/opencv.hpp>

void mian
{
_finddata_t info[500];//该文件夹最多有500个文件
long handlefirst;//储存findfirst返回的句柄
int i=0;//计数器
handlefirst= _findfirst("C:\\Users\\HDaniel\\Desktop\\br\\*.jpg",&info[0]);//找到文件夹中第一个文件,成功赋0,没有文件赋-1
if(handlefirst == -1)//没有文件
{
cout<<"文件夹可能为空!"<<endl;
}
do
{
cout<<"文件名"<<info[i].name<<endl<<"正在缩放..."<<endl;
char filename[200];
strcpy(filename,"C:\\Users\\HDaniel\\Desktop\\br\\");
strcat(filename,info[i].name);

IplImage* img=cvLoadImage(filename,1);
cvSaveImage("tst.jpg",img);
IplImage* img_resize=cvCreateImage(cvSize(100,(int)((img->height)*100/(img->width))),img->depth,img->nChannels);
cvResize(img,img_resize);
cvSaveImage(info[i].name,img_resize);

i++;//计数器自增
cvReleaseImage(&img);
cvReleaseImage(&img_resize);

}while(_findnext(handlefirst,&info[i])==0);

return 0;
}


删除文件夹及所有内容:
void myDeleteDirectory(CString directory_path)   //删除一个文件夹下的所有内容
{   
CFileFind finder;
CString path;
path.Format("%s/*.*",directory_path);
BOOL bWorking = finder.FindFile(path);
while(bWorking){
bWorking = finder.FindNextFile();
if(finder.IsDirectory() && !finder.IsDots()){//处理文件夹
myDeleteDirectory(finder.GetFilePath()); //递归删除文件夹
RemoveDirectory(finder.GetFilePath());
}
else{//处理文件
DeleteFile(finder.GetFilePath());
}
}
}
void DeleteAllDirectory() //删除文件夹 包括非空的文件夹
{
//第一步 删除 该文件夹下所有文件
myDeleteDirectory("C:/ForVcTest");

//第二步 删除该空文件夹
RemoveDirectory("C:/ForVcTest");
}


如指定文件夹存在,清空文件夹中文件,否则,创建文件夹
#define directory_path "C:\\CR_temp"
if (PathFileExists(directory_path)) //判断文件夹是否存在
{
CFileFind finder;
CString path;
path.Format("%s\\*.*",directory_path);
BOOL bWorking = finder.FindFile(path);
while(bWorking)
{
bWorking = finder.FindNextFile();
//处理文件
DeleteFile(finder.GetFilePath()); //逐个删除文件
}
}
else
{
if (!CreateDirectory(directory_path,NULL)) //创建文件夹
{
AfxMessageBox("用于存放结果图片的文件夹创建失败!");
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值