用GetFileSize()函数,先用CreateFile()获得文件HANDLE我们在用CreateFile函数时,第一参数如果要传入是路径要怎么做,还是只能传文件?

解决方案 »

  1.   

    __int64 fileSize = 0;
    HANDLE hFile = CreateFile("C:\\gg.txt", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    if(hFile != INVALID_HANDLE_VALUE)
    {
    DWORD lowSize, highSize;
    lowSize = GetFileSize(hFile, &highSize);
    fileSize = (__int64)highSize << 32 | lowSize;
    CloseHandle(hFile);
    }
      

  2.   

    CreateFile的第1参数可以是文件的完整路径,也可以是相对路径。
      

  3.   

    CreateFile只能传文件名来获得句柄,传目录名是特殊用途,没办法直接查到整个目录的大小。实际上,我们用右建查看目录属性时,就会看到大小在不停的变化,猜测它也是在遍历。也就是说windows自己也是通过遍历的方式获得整个文件夹的信息的。个人猜测,不一定准确。