vs中实现遍历目录

这两天实现了在vs下遍历指定目录的所有文件,求出对应的hash码,最后封装成动态库。

首先总结一下思想和用到的主要函数:

1.用FindFirstFile函数可以开始寻找第一得到的文件,并返回一个句柄用来做FindNextFile输入,将文件信息存入fileinfo结构中;

2.利用fileinfo中dwFileAttributes的值判断得到的文件是文件还是目录,如果是目录则进入子目录遍历;如果是文件则调用基于名字的hash计算函数,得到对应的hash码,调用CreateFile得到文件的句柄用来调用基于句柄(handle)的hash计算函数;

3.循环调用FindNextFile,寻找下一个文件;

4.将工程调试完毕,建立dll,当调用这个dll时,也需要将它调用的hash-dll同时复制到exe的运行目录中(一般在debug目录)。

其中要注意的几个点:

1.windows下面每一个文件夹中默认有.文件和..文件夹,处理时要把它过滤,否则会产生对应的hash失败;

2.在实现循环时要注意在恢复默认的路径,比如遍历“d:/outlook/log",开始继续下一步循环时要先还原成“d:/outlook/”再加下一个文件名;

3.FindNextFile产生的句柄与CreateFile产生的代表文件的句柄不同,只能用于FindNextFile做输入,最后要用findclose(handle)结束,而不是close(handle);

4.在引用目录时最后用“/"儿不是“\\”,比较通用;

5.在vs中很多unicode类型数据,需要与ASCII相互转换。

时间: 2025-01-04 19:02:59

vs中实现遍历目录的相关文章

遍历目录中所有文件并统计信息

遍历目录中所有文件,并且统计文件类型. #!/bin/bash #filename: filestat.sh #set -x if [ $# -ne 1 ]; then     echo $0 basepath;    echo fi path=$1 declare -A statarray; while read line; do   ftype=`file -b "$line"`   let statarray["$ftype"]++; done< <

中财讯 爆遍历目录漏洞

中财讯 爆遍历目录漏洞 中财讯 爆遍历目录漏洞

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就使用递归遍历目录 代码如下: 1 import java.io.File; 2 3 public class ZuoYe { 4 public static void main(String[] args) { 5 //创建file对象 6 File f=new File("d://新建文件夹&qu

C/C++ 遍历目录文件,默认目录下

每次遇到这样的问题总会折腾很久,到网上搜,或者查资料,弄了很多次,但就是没记住,这次写程序又遇到了,干脆就把它都弄清楚了,然后顺便在这里记录一下,以后再遇到就不用到处去找了. 用 C/C++ 遍历目录文件主要有两种方式,分别对应在 Windows VS 环境下和 Linux\Unix 环境下的方法,它们各自所使用的函数如下: (Windows VS)_findfirst, _findnext, _findclose (Linux\Unix)opendir, readdir, closedir 下

递归的使用:遍历目录函数

2016.12.21,星期三   利用递归输出显示C盘中所有的文件及文件夹: <?php //遍历目录 function wenJian($path,$v = 0) {// $path = "."; //打开目录 $a = opendir($path) ; //读取目录,readdir(资源名(通道)) // $b = readdir($a); //$b=readdir($a)外面的括号必须加上,"="赋值运算符运算等级小于"!=="比较运

php 递归和非递归遍历目录下的所有文件

//php 递归实现遍历 用dir 返回对象 <?    function loop($dir){  $mydir =dir($dir);    //以对象的形式访问     while($file = $mydir ->read()){                         //目录中有隐藏文件'.'和'..' 遍历的时候需要注意             if((is_dir("$dir/$file")) && ($file!=".&q

linux下实现ls()函数遍历目录

需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有: #include <dirent.h> DIR* opendir(const char* dir_path); struct dirent* readdir(DIR* dirp); int closedir(DIR* dirp); int lstat(const chat* filename,struct stat* st); 在这里涉及到几个结构体:DIR,struct dirent,struct st

(实用篇)PHP不用递归遍历目录下所有文件的代码

<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

php遍历目录输出目录及其下的所有图片文件

在做网站的时候,需要给文章内所有的图片添加上logo,如何利用ThinkPHP来实现. ThinkPHP为我们很好的提供了图像处理类,给文章中的所有图片加上水印的思路,上传的图片文件都保存在一个文件夹下面,我只需要获取该文件夹以及子文件夹下面的所有图片,遍历一次,加上水印即可,因此目前的难度只是怎么获取文件中的图片,并且遍历一次即可.[在ImagesController控制器中具体会出现二维数组的遍历]:因此添加水印的图片问题就转换成了利用PHP遍历目录输出目录及其下的所有图片文件 //遍历目录