C++如何取得文件的大小?
1. C++如何取得文件的大小? system.ini 为 3M 那如何知道它是 3M?
2. 如何取得C盘可用空间的大小?
3. 如何取得内存的使用情况?
Thanks!
问题点数:50、回复次数:9Top
1 楼liqth(爱飞)回复于 2005-01-19 23:18:43 得分 0
help me please!Top
2 楼tangshiping(苇舞)回复于 2005-01-20 09:39:53 得分 20
呵呵,建议你到VC区。
1:HANDLE handle = CreateFile(...);
DWORD GetFileSize(
HANDLE handle , // handle to file
LPDWORD lpFileSizeHigh // high-order word of file size
);
2://获取磁盘剩余空间 ULARGE_INTEGER
ULARGE_INTEGER lpuse;
ULARGE_INTEGER lptotal;
ULARGE_INTEGER lpfree;
GetDiskFreeSpaceEx("d:\\",&lpuse,&lptotal,&lpfree);
if(lpfree.QuadPart < 600*1024*1024)//如果小于600M
{
MessageBox("....");
}
//lpfree.QuadPart是 __int64 型
3:内存使用率也有相应的 API
MEMORYSTATUS MemoryStatus;
MemoryStatus.dwLength = sizeof(MEMORYSTATUS);
::GlobalMemoryStatus(&MemoryStatus);
Top
3 楼tangshiping(苇舞)回复于 2005-01-20 09:41:08 得分 5
41362804 my qqTop
4 楼ChengZi()回复于 2005-01-20 11:13:12 得分 5
文件大小:
FILE * f = fopen("system.ini", "rb");
feek(f, 0, SEEK_END); // 到文件结束
long size = ftell(f);
Top
5 楼EvilSword(邪剑)回复于 2005-01-20 11:17:23 得分 5
你所问的这个问题和C++没有关系,只和操作系统有关,在windows下和unix下是不一样的。主要看系统的API接口Top
6 楼jacklondon(jacklondon)回复于 2005-01-20 11:26:59 得分 5
用纯粹的 ANSI C++ 取得文件大小:
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
string sFileName = "d:/windows/system.ini";
ifstream in(sFileName.c_str());
in.seekg(0,ios::end);
long size = in.tellg();
in.close();
cout << "文件大小为:" << size << endl;
return 0;
}Top
7 楼kay_zlc(小K)回复于 2005-01-20 13:27:58 得分 5
The file size got by ifstream is limit to long, if the file is too large to be hold in a long variable(32bits), then you have to use other libs' functions, such as MFC or boost.Top
8 楼jacklondon(jacklondon)回复于 2005-01-20 15:49:14 得分 5
已经够大了。 Linux 的 Ext2 , Ext3 文件系统的单个文件大小也不大。Top
9 楼localman()回复于 2005-01-20 16:33:23 得分 0
jacklondon(jacklondon)的用文件流的办法适用范围广Top




