C/C++ 如何遍历文件夹中最大的那一个文件
2016-03-05 00:00
483 查看
摘要: 在这里我为大家介绍一个快速查找文件夹中最大的一个文件的方法!!!当中用到while方法.另外又附上了node.js版的.希望大家多多交流.
?
1. [代码][C/C++]代码
#include <stdio.h>
#include <windows.h>
#include <time.h>
DWORD
maxsize = 0;
clock_t
start,end;
DWORD
count = 0;
void
find(
char
* lpPath)
{
char
szFind[MAX_PATH],szFile[MAX_PATH];
DWORD
tmpsize = 0;
WIN32_FIND_DATA FindFileData;
strcpy
(szFind,lpPath);
strcat
(szFind,
"\\*.*"
);
HANDLE
hFind=FindFirstFile(szFind,&FindFileData);
if
(INVALID_HANDLE_VALUE == hFind)
return
;
while
(TRUE)
{
if
(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
//如果为目录
{
if
(FindFileData.cFileName[0] !=
'.'
)
//判断是否为. or ..
{
strcpy
(szFile,lpPath);
strcat
(szFile,
"\\"
);
strcat
(szFile,FindFileData.cFileName);
find(szFile);
//递归调用
}
}
else
{
//printf("%s\n",FindFileData.cFileName);
count++;
//文件计数
tmpsize = FindFileData.nFileSizeLow;
if
(maxsize <tmpsize)maxsize = tmpsize;
}
//下一个文件为空,则退出
if
(!FindNextFile(hFind,&FindFileData))
break
;
}
}
void
main()
{
char
filepath[MAX_PATH]=
"d:\\devtools"
;
printf
(
"%s\n"
,filepath);
start =
clock
();
find(filepath);
end =
clock
();
printf
(
"文件数:%d %dms max File:%d"
,count,end - start,maxsize);
//system("PAUSE");
}
?
2. [代码]node.js版
/*
遍历文件夹下最大的文件,并输出路径,大小
*/
function
findmax(basepath){
//只能执行一次
if
(findmax.s)
return
;
findmax.s =
true
;
var
fs = require(
'fs'
);
var
maxfile = 0;
var
count = 0;
var
begin =
new
Date().getTime();
function
Traversal(filepath){
fs.readdir(filepath,
function
(err,files){
if
(err)
return
;
files.forEach(
function
(file,index,files){
//console.log(index + "=" + filepath +"\\" + file);
var
tmppath = filepath +
"\\"
+ file;
fs.stat(tmppath,
function
(err,stats){
if
(err){
console.log(
"打开文件错误"
+ err);
return
;
};
if
(stats.isDirectory())Traversal(tmppath);
else
{
//console.log(++count +" "+ tmppath + " " + stats.size);
count++;
if
(maxfile <stats.size)
maxfile = stats.size;
}
});
});
});
}
Traversal(basepath);
process.on(
'exit'
,
function
(){
var
end =
new
Date().getTime();
console.log(count +
'结束耗时:'
+ (end - begin)+
"ms "
+ maxfile);
});
console.log(basepath);
}
findmax(
'D:\\devtools\\'
);
相关文章推荐
- 异常安全,RAII与C++11
- C/C++中的'\0'
- c++中一个关于模板的小例子
- C++中构造函数能调用虚函数吗?(转)
- C/C++调用java---JNI常用函数
- DSP 2812: 使用C++实现的SCI主动站程序框架
- C/C++中的回车与换行
- C语言——源码、反码、补码
- HDU 1062 Text Reverse(水题)
- 【C语言位运算的应用】如何按bit位翻转一个无符号整型
- C++类模板使用详解
- C++内存管理
- c++ primer 第五版的Sales_data类
- jnaerator命令行生成bridj的包(java调用c++动态链接库)
- C、C++中的隐式转换和显示转换
- C语言中一些对文件操作的函数总结
- 全排列(含查重)
- C++ 优先队列
- C++中函数传递数组的探索
- C/C++的内存处理函数