windows下遍历文件夹
函数:
HANDLE WINAPI FindFirstFile(
_In_ LPCTSTR lpFileName,
_Out_ LPWIN32_FIND_DATA lpFindFileData
);
BOOL WINAPI FindNextFile(
_In_ HANDLE hFindFile,
_Out_ LPWIN32_FIND_DATA lpFindFileData
);
@ LPCTSTR与char *的转换
参考资料:TCHAR与char的互转
LPCTSTR会根据当前的字符集进行自适应:如果为ANSI,LPCTSTR = const char *;如果为Unicode,LPCTSTR = const wchar_t *;
但LPCTSTR = const wchar_t *时,需要使用WideCharToMultiByte() / MultiByteToWideChar()函数;
@ FindFirstFile()
由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件。
@ 核心代码
void GetRawImagePath(TCHAR* folder, std::vector<TCHAR *> &image_path)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
TCHAR path[];
lstrcpy(path, folder);
lstrcat(path, _T("\\"));
lstrcat(path, _T("*.*")); /**必须加*.*才能搜索文件夹下所有文件*/ hFind = FindFirstFile(path, &FindFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
std::cout << "FindFirstFile failed:" << GetLastError() << std::endl;
return;
} do{
if (FindFileData.cFileName[] == '.')
continue; if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
std::cout << "directory" << std::endl;
TCHAR subpath[];
lstrcpy(subpath, folder);
lstrcat(subpath, _T("\\"));
lstrcat(subpath, FindFileData.cFileName);
GetRawImagePath(subpath, image_path);
}
else
{
std::cout << "file" << std::endl;
TCHAR *path = new TCHAR[];
lstrcpy(path, folder);
lstrcat(path, _T("\\"));
lstrcat(path, FindFileData.cFileName);
image_path.push_back(path);
} } while (FindNextFile(hFind, &FindFileData)); FindClose(hFind);
}
windows下遍历文件夹的更多相关文章
- windows下遍历文件夹下的文件
#include <io.h>#include <stdio.h>#include <iostream>using namespace std;int ReadSt ...
- Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)
https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...
- C++下遍历文件夹
编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流. 1. 先考虑在单层目录下,遍历所有文件.以C:\WINDOWS为例: 用到数据结构_finddata_t,文件信息结构体的指针 ...
- Delphi下遍历文件夹下所有文件的递归算法
{------------------------------------------------------------------------------- 过程名: MakeFileLis ...
- VC下遍历文件夹中的所有文件的几种方法
一.使用::FindFirstFile和::FindNextFile方法 #include "StdAfx.h" #include <windows.h> #inclu ...
- 虚拟机中如何Linux系统如何访问PC硬盘中的文件(如何将windows下的文件夹挂载到linux虚拟机下)
这段时间决定学习嵌入式,变打算安装个Linux系统先熟悉一下Linux系统的使用,但自己电脑上安装的win7系统又不想装双系统,一是闲麻烦,二是由于对Linux系统不熟悉担心会因为自己的误操作而损坏系 ...
- Windows下.svn文件夹的最简易删除方法
如果想删除Windows下的.svn文件夹,通过手动删除的渠道是最麻烦的,因为每个文件夹下面都存在这样的文件. 下面是一个好办法: 建立一个文本文件,取名为kill-svn-folders.reg(扩 ...
- Windows下.svn文件夹的最简易删除方法(附linux)
如果想删除Windows下的.svn文件夹,通过手动删除的渠道是最麻烦的,因为每个文件夹下面都存在这样的文件.下面是一个好办法:建立一个文本文件,取名为kill-svn-folders.reg(扩展名 ...
- windows下删除文件夹里的 .svn
windows下: 删除文件夹里的 .svn, cmd 进入相应目录 运行 for /r ./ %a in (./) do @if exist "%a/.svn" rd ...
随机推荐
- selenium.webdriver元素定位失败
错误提示: Traceback (most recent call last): File "E:/PythonData/Login/venv/logIn.py", line 18 ...
- 【redis】redis
一.redis简介: 1. reids 也是一个 key-value 存储系统,更加确切地说,它已经是一个非关系型数据库. 2. 关系型. SQL语言. 3. 非关系型. key - value. 4 ...
- 二维码,QR码,编码原理与实现
文章更新于:2020-02-18 注:开头是四篇文章的链接,下面是这四篇文章的截图 # 想了解二维码,读这几篇就够了 # 二维码的基础原理是什么 https://cli.im/news/help/10 ...
- MTK Android Framework用SystemProperties通过JNI调用访问系统属性
1.导包 import android.os.SystemProperties; 2. Android SystemProperties设置/读取 #设置 Systemproperties.set(n ...
- javascript中的constructor
constructor,构造函数,对这个名字,我们都不陌生,constructor始终指向创建当前对象的构造函数. 这里有一点需要注意的是,每个函数都有一个prototype属性,这个prototyp ...
- flask 入门 之 Python Shell (二)
创建迁移仓库: 1.安装工具: pip install flask_migarte 2.代码: #encoding:utf-8 from flask_sqlalchemy import SQLAlch ...
- 基础类封装-Requests库封装
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Time : 2020/03/18 23:37 # @Author : Tang Yiwei # @ ...
- 如何实现Jenkins 编译结果通知到QQ好友及QQ群组<很遗憾 2019年1月1日腾讯停止了webqq机器人的服务支持>
Jenkins-NotifyQQ NotifyQQ 运行于Docker 本文介绍mac 环境下实现Jenkins编译结果QQ即时通知 Jenkins 安装使用及iOS自动化打包,邮件通知请参考本人博客 ...
- 数组的连接和截取(contact和slice和splice)
<script> var arr1 = ["a","b","c"]; var arr2 = [1,2,3]; //concat把 ...
- AJ学IOS 之二维码学习,快速生成二维码
AJ分享,必须精品 二维码是一项项目中可能会用到的,iOS打开相机索取二维码的速度可不是Android能比的...(Android扫描二维码要来回来回晃...) 简单不多说,如何把一段资料(网址呀,字 ...