用 WriteFile 在一个文件里追加内容?
给个小例子,要正确的.

解决方案 »

  1.   

    默认只能追回到文件尾.
    先用SetFilePointer把指针移支文件尾.
    然后再写入就可以了.
      

  2.   

    先打开文件,然后SeekToEnd();
    再调用 write
      

  3.   

    HANDLE hFile; 
     
    HANDLE hAppend; 
     
    DWORD  dwBytesRead, dwBytesWritten, dwPos; 
     
    char   buff[4096]; 
     
    // Open the existing file. 
     
    hFile = CreateFile("ONE.TXT",     // open ONE.TXT 
        GENERIC_READ,                 // open for reading 
        0,                            // do not share 
        NULL,                         // no security 
        OPEN_EXISTING,                // existing file only 
        FILE_ATTRIBUTE_NORMAL,        // normal file 
        NULL);                        // no attr. template if (hFile == INVALID_HANDLE_VALUE) 

        ErrorHandler("Could not open ONE.");  // process error 

     
    // Open the existing file, or if the file does not exist, 
    // create a new file. 
     
    hAppend = CreateFile("TWO.TXT",   // open TWO.TXT 
        GENERIC_WRITE,                // open for writing 
        0,                            // do not share 
        NULL,                         // no security 
        OPEN_ALWAYS,                  // open or create 
        FILE_ATTRIBUTE_NORMAL,        // normal file 
        NULL);                        // no attr. template if (hAppend == INVALID_HANDLE_VALUE) 

        ErrorHandler("Could not open TWO.");    // process error 

     
    // Append the first file to the end of the second file. 
    // Lock the second file to prevent another process from 
    // accessing it while writing to it. Unlock the 
    // file when writing is finished. 
     
    do 

        if (ReadFile(hFile, buff, 4096, &dwBytesRead, NULL)) 
        { 
            dwPos = SetFilePointer(hAppend, 0, NULL, FILE_END); 
            LockFile(hAppend, dwPos, 0, dwPos + dwBytesRead, 0); 
            WriteFile(hAppend, buff, dwBytesRead, 
                &dwBytesWritten, NULL); 
            UnlockFile(hAppend, dwPos, 0, dwPos + dwBytesRead, 0); 
        } 
    } while (dwBytesRead == 4096); 
     
    // Close both files.
     
    CloseHandle(hFile); 
    CloseHandle(hAppend);