如何使用fstream打开一个已经存在的文件,并得到文件大小???????
其它方法也可以,除了CFile(不知道为什么,我的CFile对有些文件就打不开,win2k),请指教!!!!!

解决方案 »

  1.   

    以下来自CSDN
    使用Windows API
    GetFileSize
    The GetFileSize function retrieves the size of a specified file. This function stores the file size in a DWORD value. To retrieve a file size that is larger than a DWORD value, use the GetFileSizeEx function. DWORD GetFileSize(
      HANDLE hFile,           // handle to file
      LPDWORD lpFileSizeHigh  // high-order word of file size
    );
    Parameters
    hFile 
    [in] Handle to the file whose size is to be returned. This handle must have been created with either GENERIC_READ or GENERIC_WRITE access to the file. 
    lpFileSizeHigh 
    [out] Pointer to the variable where the high-order word of the file size is returned. This parameter can be NULL if the application does not require the high-order word. 
    Return Values
    If the function succeeds, the return value is the low-order doubleword of the file size, and, if lpFileSizeHigh is non-NULL, the function puts the high-order doubleword of the file size into the variable pointed to by that parameter. If the function fails and lpFileSizeHigh is NULL, the return value is INVALID_FILE_SIZE. To get extended error information, call GetLastError. If the function fails and lpFileSizeHigh is non-NULL, the return value is INVALID_FILE_SIZE and GetLastError will return a value other than NO_ERROR. Res
    You cannot use the GetFileSize function with a handle of a nonseeking device such as a pipe or a communications device. To determine the file type for hFile, use the GetFileType function. The GetFileSize function retrieves the uncompressed size of a file. Use the GetCompressedFileSize function to obtain the compressed size of a file.Example Code
    Note that if the return value is INVALID_FILE_SIZE and lpFileSizeHigh is non-NULL, an application must call GetLastError to determine whether the function has succeeded or failed. The following sample code illustrates this point: // Case One: calling the function with 
    //           lpFileSizeHigh == NULL 
     
    // Try to obtain hFile's size 
    dwSize = GetFileSize (hFile, NULL) ; 
     
    // If we failed ... 
    if (dwSize == INVALID_FILE_SIZE) 

        // Obtain the error code. 
        dwError = GetLastError() ; 
     
        // Deal with that failure. 
        . 
        . 
        . 
     
        } // End of error handler 
     
     
    // 
    // Case Two: calling the function with 
    //           lpFileSizeHigh != NULL 
     
    // Try to obtain hFile's huge size. 
    dwSizeLow = GetFileSize (hFile, & dwSizeHigh) ; 
     
    // If we failed ... 
    if (dwSizeLow == INVALID_FILE_SIZE 
        && 
        (dwError = GetLastError()) != NO_ERROR )

        // Deal with that failure. 
        . 
        . 
        . 
     
        } // End of error handler. 
    For another example, see Two Examples of File Mapping. Requirements 
      Windows NT/2000/XP: Included in Windows NT 3.1 and later.
      Windows 95/98/Me: Included in Windows 95 and later.
      Header: Declared in Winbase.h; include Windows.h.
      Library: Use Kernel32.lib.See Also
    File I/O Overview, File I/O Functions, GetCompressedFileSize, GetFileSizeEx, GetFileType 
      

  2.   

    CFile应该是可以的!
    别的,我在查查!