博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写测试:VC下获取文件大小的4种方法
阅读量:6989 次
发布时间:2019-06-27

本文共 1846 字,大约阅读时间需要 6 分钟。

代码参考自lailx的博客:获取文件大小的4种方法( )
 
1 // TestGetFileSize.cpp : Defines the entry point for the console application. 2 // 3  4 #include "stdafx.h" 5 #include 
6 #include
7 #include
8 #include
9 10 using namespace std;11 12 size_t GetFileSize1(LPCTSTR lpszFileName)13 {14 size_t nResult = 0;15 HANDLE handle = CreateFile(lpszFileName, FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);16 if (handle != INVALID_HANDLE_VALUE)17 {18 nResult = GetFileSize(handle, NULL);19 CloseHandle(handle);20 }21 return nResult;22 }23 24 size_t GetFileSize2(LPCTSTR lpszFileName)25 {26 size_t nResult = 0;27 WIN32_FIND_DATA fileInfo; 28 HANDLE hFind; 29 hFind = FindFirstFile(lpszFileName, &fileInfo); 30 if(hFind != INVALID_HANDLE_VALUE) 31 nResult = fileInfo.nFileSizeLow; 32 FindClose(hFind); 33 return nResult;34 }35 36 size_t GetFileSize3(LPCTSTR lpszFileName)37 {38 size_t nResult = 0;39 FILE* file = fopen(lpszFileName, "r");40 if (file)41 {42 nResult = filelength(fileno(file));43 fclose(file);44 }45 return nResult;46 }47 48 size_t GetFileSize4(LPCTSTR lpszFileName)49 {50 size_t nResult = 0;51 struct _stat info;52 _stat(lpszFileName, &info);53 nResult = info.st_size;54 return nResult;55 }56 57 DWORD Test(size_t (*pFunc)(LPCTSTR), LPCTSTR lpszFileName)58 {59 DWORD dwResult = 0;60 size_t nFileSize = 0;61 DWORD tick = GetTickCount();62 for (int i=0; i<10000; i++)63 {64 nFileSize = pFunc(lpszFileName);65 // cout<<"FileSize = "<
<

测试结果:

 
当目标文件正在被写入的时候,体积逐渐增大,但测试发现第GetFileSize2()、GetFileSize4()返回的文件大小是固定不变的,因此在需要监视文件大小时,这两种方法不可取。
 

转载于:https://www.cnblogs.com/ddgg/archive/2013/02/25/2932335.html

你可能感兴趣的文章
Python爬虫之简单爬虫框架实现
查看>>
python isinstance内建函数的使用
查看>>
老师不能把你怎样,但外面的世界可以!
查看>>
css居中div的几种常用方法
查看>>
css3
查看>>
根据某个元素做相对定位
查看>>
C# Window编程随记——ClickOnce程序部署
查看>>
小白系列-免费广告路由器web认证设置(2)
查看>>
Top 16 Java 应用类 - 这些功能再也不用自己写了
查看>>
面试题之矩阵与转置矩阵相乘
查看>>
linux光盘、U盘的挂载与卸载
查看>>
linux sudo命令
查看>>
LeetCode-最长回文子串
查看>>
【HDOJ】3400 Line belt
查看>>
JVM Guide
查看>>
大数模版
查看>>
HDU4044 GeoDefense(树形dp+分组背包)
查看>>
Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
查看>>
JavaScript常用标签和方法总结
查看>>
GO语言的进阶之路-网络编程之socket
查看>>