我自己写了个文件——file_path,想用GetFileSize()函数获得该文件的大小并在视图类显示,按照MSDN做了几次多不对。请问GetFileSize()函数的具体使用方法是怎样的?最好是能给个实际的例子。谢谢你!

解决方案 »

  1.   

    do you still have any questions?
      

  2.   

    hFile = CreateFile(...);
    dwSize = GetFileSize(hFile, NULL);
    if( dwSize == INVALID_FILE_SIZE ) 
    {
        dwError = GetLastError();
    }
    dwSizeLow = GetFileSize (hFile, & dwSizeHigh) ;
    if (dwSizeLow == INVALID_FILE_SIZE 
        && (dwError = GetLastError()) != NO_ERROR )
    {
        //Failed 
    }...
    CloseFile(hFile);
      

  3.   

    谢谢!上面同志的支持。
    我已经试过了,具体的代码是:
    hfile=CreateFile(file_path,//是我自己写的文件的路径
    GENERIC_READ|GENERIC_WRITE,
    FILE_SHARE_READ|FILE_SHARE_WRITE,
    NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS,
    NULL);
     
    dwsize = GetFileSize(hfile, NULL);
    if( dwsize == INVALID_FILE_SIZE ) 
    {
        dwError = GetLastError();
    }
    dwsizeLow = GetFileSize (hfile, & dwsizeHigh) ;
    if (dwsizeLow == INVALID_FILE_SIZE 
        && (dwError = GetLastError()) != NO_ERROR )
    {
        MessageBox("GetFileSize error!"); 
    }
    }
    运行后就会出现“GetFileSize error!”的提示。
    调试后发现hfile=0xffffffff;是不是CreateFile()失败阿?
    另外说下我在MSDN中没找到CloseFile()。
        请哪朋友详细指教下。我是位新手,对于你来说是个简单的问题,但对于
    我来说是很复杂;你的指点,会让我少走很多的弯路。真诚谢谢你!
      

  4.   

    hfile=0xffffffff,打开文件失败了。
      

  5.   

    获取文件大小可以用CFIle  CFileStatus CFileStatus st;
    CFile fl;
    fl.GetStatus("sss.voc",st);
    rec_size.Format("大小%d 字节",st.m_size);
    fl.Close();
      

  6.   

    文件路径是不是给错了?你可以判断一下hfile是否正确
      

  7.   

    msvbvm60(HOOK)的方法我已经试过了,但有问题。
    首先完全按照他的代码做,程序运行后会出现:Debug Assertion Failed!错误。
    然后我把fl.Close()屏蔽掉后,程序运行起来没问题;但对于任何文件,文件的大小都是:-842150451。请问这是怎么回事?
      

  8.   

    在CreateFile后最好加个判断,像下面:if (hfile == INVALID_HANDLE_VALUE)
    {
      MessageBox("CreateFile error!");
      return;
    } 你这里肯定是打开文件失败了,仔细看一下MSDN里的CreateFile。