(二)   BOOL MoveFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName);

解决方案 »

  1.   

    BOOL DeleteFile(LPCTSTR lpFileName);
      

  2.   

    BOOL GetDiskFreeSpace(
      LPCTSTR lpRootPathName,          // root path
      LPDWORD lpSectorsPerCluster,     // sectors per cluster
      LPDWORD lpBytesPerSector,        // bytes per sector
      LPDWORD lpNumberOfFreeClusters,  // free clusters
      LPDWORD lpTotalNumberOfClusters  // total clusters
    );
      

  3.   

    (一):
    #include "stdafx.h"
    #ifndef _INC_TCHAR
    #include <TCHAR.H>
    #endif // _INC_TCHAR
    #include <LoadLibrary.h>
    extern __int64 RealGetDiskFreeSpace( LPCTSTR pcszPath );
    //
    // Typedefs for ANSI and UNICODE versions
    typedef WINBASEAPI BOOL ( WINAPI *GETDISKFREESPACEEXW) ( LPCWSTR lpDirectoryName
    , PULARGE_INTEGER lpFreeBytesAvailableToCaller
    , PULARGE_INTEGER lpTotalNumberOfBytes
    , PULARGE_INTEGER lpTotalNumberOfFreeBytes );typedef WINBASEAPI BOOL ( WINAPI *GETDISKFREESPACEEXA) ( LPCSTR lpDirectoryName
    , PULARGE_INTEGER lpFreeBytesAvailableToCaller
    , PULARGE_INTEGER lpTotalNumberOfBytes
    , PULARGE_INTEGER lpTotalNumberOfFreeBytes );#ifdef UNICODE
    #define GETDISKFREESPACEEX GETDISKFREESPACEEXW
    #define GETDISKFREESPACEEX_NAME "GetDiskFreeSpaceExW"
    #else // UNICODE
    #define GETDISKFREESPACEEX GETDISKFREESPACEEXA
    #define GETDISKFREESPACEEX_NAME "GetDiskFreeSpaceExA"
    #endif // UNICODE__int64 RealGetDiskFreeSpace( LPCTSTR pcszPath )
    {
    CLoadLibrary lib( _T("KERNEL32.DLL") );
    if( lib.IsLoaded() )
    {
    GETDISKFREESPACEEX pGetDiskFreeSpaceEx = reinterpret_cast<GETDISKFREESPACEEX>( lib.GetProcAddress( GETDISKFREESPACEEX_NAME ) );
    if( pGetDiskFreeSpaceEx )
    {
    ULARGE_INTEGER ulFreeBytesAvailableToCaller;
    ULARGE_INTEGER ulTotalNumberOfBytes;
    ULARGE_INTEGER ulTotalNumberOfFreeBytes;
    if( pGetDiskFreeSpaceEx( pcszPath, &ulFreeBytesAvailableToCaller, &ulTotalNumberOfBytes, &ulTotalNumberOfFreeBytes ) )
    {
    return ulFreeBytesAvailableToCaller.QuadPart;
    }
    }
    } DWORD sp[ 4 ];
    VERIFY( GetDiskFreeSpace( pcszPath, &sp[ 0 ], &sp[ 1 ], &sp[ 2 ], &sp[ 3 ] ) );
    return sp[ 0 ] * sp[ 1 ] * sp[ 2 ];
    }Tested in UNICODE. __int64 RealGetDiskFreeSpace( LPCTSTR pcszPath ); Return value Returns the number of bytes free on the drive specified. Example 
    #include "stdafx.h"
    #include <stdio.h>
    #include <TCHAR.H>
    extern __int64 RealGetDiskFreeSpace( LPCTSTR pcszPath );
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
    LPCTSTR pcszDrive = _T("c:");
    __int64 i64 = RealGetDiskFreeSpace( pcszDrive ); TCHAR szBuffer[ 256 ];
    const long lKB = (long)( i64 / 1024 );
    const long lMB = (long)( i64 / (1024 * 1024) );
    wsprintf( szBuffer, _T("drive %s has %dKB or %dMB free"), pcszDrive, lKB, lMB );
    MessageBox( NULL, szBuffer, _T("Example"), MB_OK );
    return 0;
    }
      

  4.   

    看看Platform SDK File and I/O函数吧。得到剩余空间最好用GetDiskFreeSpaceEx。