API的文件遍历,未使用CFileFind,因为里面牵扯MFC,编个DLL好麻烦。

 1 // FindFileDebug.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"
 5 #include "FindFileDebug.h"
 6
 7 #ifdef _DEBUG
 8 #define new DEBUG_NEW
 9 #endif
10
11 #define IS_DIRECTORY(x) ((x) & (FILE_ATTRIBUTE_DIRECTORY))
12 #define IS_FAILED (0)
13
14 void TraversFile(CString csPath, CString & csDatabuffer);
15 BOOL IsDot(LPCTSTR ptStr);
16 using namespace std;
17
18 #define TESTPATH ("G:\\Python脚本\\PyCahrm项目")
19
20 int main()
21 {
22     int nRetCode = 0;
23     CString filepath = CString(TESTPATH);
24     CString FileBuffer;
25     TraversFile(filepath, FileBuffer);
26     printf("错误: GetModuleHandle 失败\n");
27     system("pause");
28     return nRetCode;
29 }
30
31
32 void TraversFile(CString csPath, CString & csDatabuffer)
33 {
34     CString csPrePath = csPath;
35     CString csNextPath = csPath;
36     CString csNextLine = CString("\r\n");
37     CString csSlash = CString("\\");
38
39     WIN32_FIND_DATA FindFileData = { 0 };
40     HANDLE hFistFind = FindFirstFile(csPath + CString("\\*.*"), (LPWIN32_FIND_DATA)&FindFileData);
41     if ( INVALID_HANDLE_VALUE == hFistFind)
42     {
43         printf("Failed to open file" );
44     }
45     else
46     {
47         wcout << FindFileData.cFileName;
48     }
49     do {
50         if (IsDot(FindFileData.cFileName))
51         {
52             continue;
53         }
54         if (IS_DIRECTORY(FindFileData.dwFileAttributes))
55         {
56             csNextPath += "\\";
57             csNextPath += FindFileData.cFileName;
58             TraversFile(csNextPath, csDatabuffer);
59             csNextPath = csPrePath;
60         }
61         else
62         {
63             csDatabuffer += csNextPath + csSlash + FindFileData.cFileName + csNextLine;
64             wcout << FindFileData.cFileName;
65         }
66     } while (FindNextFile(hFistFind, (LPWIN32_FIND_DATA)&FindFileData) != IS_FAILED);
67     FindClose(hFistFind);
68     hFistFind = INVALID_HANDLE_VALUE;
69 }
70
71 BOOL IsDot(LPCTSTR ptStr)
72 {
73     size_t ulen = wcslen (ptStr);
74     if (ulen >= 256)
75     {
76         return TRUE;
77     }
78     while (ulen--)
79     {
80         if (ptStr[ulen] != L‘.‘)
81         {
82             return FALSE;
83         }
84     }
85     return TRUE;
86 }

// FindFileDebug.cpp : 定义控制台应用程序的入口点。//
#include "stdafx.h"#include "FindFileDebug.h"
#ifdef _DEBUG#define new DEBUG_NEW#endif
#define IS_DIRECTORY(x) ((x) & (FILE_ATTRIBUTE_DIRECTORY))#define IS_FAILED (0)
void TraversFile(CString csPath, CString & csDatabuffer);BOOL IsDot(LPCTSTR ptStr);using namespace std;
#define TESTPATH ("G:\\Python脚本\\PyCahrm项目")
int main(){    int nRetCode = 0;CString filepath = CString(TESTPATH);CString FileBuffer;TraversFile(filepath, FileBuffer);printf("错误: GetModuleHandle 失败\n");system("pause");    return nRetCode;}

void TraversFile(CString csPath, CString & csDatabuffer){CString csPrePath = csPath;CString csNextPath = csPath;CString csNextLine = CString("\r\n");CString csSlash = CString("\\");
WIN32_FIND_DATA FindFileData = { 0 };HANDLE hFistFind = FindFirstFile(csPath + CString("\\*.*"), (LPWIN32_FIND_DATA)&FindFileData);if ( INVALID_HANDLE_VALUE == hFistFind){printf("Failed to open file" );}else{wcout << FindFileData.cFileName;}do {if (IsDot(FindFileData.cFileName)){continue;}if (IS_DIRECTORY(FindFileData.dwFileAttributes)){csNextPath += "\\";csNextPath += FindFileData.cFileName;TraversFile(csNextPath, csDatabuffer);csNextPath = csPrePath;}else{csDatabuffer += csNextPath + csSlash + FindFileData.cFileName + csNextLine;wcout << FindFileData.cFileName;}} while (FindNextFile(hFistFind, (LPWIN32_FIND_DATA)&FindFileData) != IS_FAILED);FindClose(hFistFind);hFistFind = INVALID_HANDLE_VALUE;}
BOOL IsDot(LPCTSTR ptStr){size_t ulen = wcslen (ptStr);if (ulen >= 256){return TRUE;}while (ulen--){if (ptStr[ulen] != L‘.‘){return FALSE;}}return TRUE;}

原文地址:https://www.cnblogs.com/matrix-r/p/10206074.html

时间: 2024-10-11 07:04:06

API的文件遍历,未使用CFileFind,因为里面牵扯MFC,编个DLL好麻烦。的相关文章

javascript 使用Html5 File Api进行文件读取

javascript 使用Html File Api进行文件读取,注意"读取"是只读不写,不可以主动获取浏览器所在主机的文件列表. Html5 中 FileApi主要有 FileUpload, File,FileList,FileError,Blob,FileReader,DataTransfer. 这里主要测试File.因此有必要给一个 test target <form action="javascript:void(0)" method="po

android ndk下文件遍历与删除

在做手机开发过程中,难免要进行一些本地文件管理操作,比如很多常见app如微博.微信等都有清除缓存功能,该功能就是遍历app自己的缓存目录,然后删除全部缓存文件.使用java的File类可以实现本地文件遍历及删除等等功能,如果使用ndk的方式该如何实现呢?以前写过<基于c++使用win32 api遍历文件夹>,由于android ndk平台属于linux系统,所以该方式是无法使用的.通过查找linux下文件管理相关资料,顺利实现了文件遍历与删除功能,下面为相应代码,需要包含<dirent.

使用Servlet3.0提供的API实现文件上传

在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能了. 一.使用Servlet3.0提供的API实现文件上传 1.1.编写上传页面 1 <%@ page language="java" pageEncoding="UTF-8"

API删除文件

using System; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport("kernel32.dll")] public static extern uint DeleteFile(string fileName); [DllImport("kernel32.dll")] public static extern uin

Python文件遍历二种方法

分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历.方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames).注意,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中

File API 读取文件小结

简单地说,File API只规定怎样从硬盘上提取文件,然后交给在网页中运行的JavaScript代码. 与以往文件上传不一样,File API不是为了向服务器提交文件设计的. 关于File API不能做什么也非常值得注意.它不能修改文件,也不能创建新文件. 想保存任何数据,你可以通过Ajax把数据发送到服务器,或者把它保存在本地存储空间中. 取得文件 使用input元素.将其type属性设置为file,这样是最常见的标准上传文本框 隐藏的input元素.为了保证风格一致,可以把input元素隐藏

HTML5 file api读取文件的MD5码工具

1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆兼容: 3.缺陷:当上传大文件时,需要较长的时间才能扫描出MD5码: 4.关于引用:其中引用了js文件(spark-md5.js) <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo

Web API与文件操作

前段时间,一直有练习ASP.NET MVC与Web API交互,接下来,Insus.NET再做一些相关的练习,Web API与文件操作,如POST文件至Web API,更新或是删除等. 不管怎样,先在数据库创建一张表,用来存储上传的文件.本实例中是把文件存储过数据库的. CREATE TABLE ApiFileDemo ( [Afd_nbr] INT IDENTITY(1,1) PRIMARY KEY NOT NULL, [Picture] [image] NULL, [PictureType]

文件遍历排序函数

<% function bianli(path) 'initiate path = server.mappath(path) set fso=server.CreateObject("scripting.filesystemobject") set objFolder=fso.GetFolder(path) set objfiles = objfolder.files '把文件名及文件路经存入theFiles数组 int slot = 0 Dim theFiles() redim