通过以下方式创建了一个文件:
HANDLE m_hAudioFile = CreateFile(".\\AudTest.dat",
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_WRITE | FILE_SHARE_READ, 
NULL, 
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, 
NULL);然后通过WriteFile把数据写到AudTest.dat中,我看了数据确实是写进去了,
但是我为什么通过以下的方式没能把数据读出来呢?
BYTE m_AudioData[8000 * 2 * 50];
HANDLE m_hAudioFiletest = CreateFile(".\\AudRecord.dat",
GENERIC_READ,
FILE_SHARE_READ, 
NULL, 
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_READONLY,
NULL);

ReadFile(m_hAudioFiletest, (void*)m_AudioData, 8000 * 2 * 50, NULL, NULL);

解决方案 »

  1.   

    BYTE m_AudioDatatest0[10] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
    HANDLE m_hAudioFiletest0 = CreateFile(".\\AudTest.dat",
    GENERIC_WRITE | GENERIC_READ,
    FILE_SHARE_WRITE | FILE_SHARE_READ, 
    NULL, 
    CREATE_ALWAYS,
    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH, 
    NULL);
    DWORD dwLentest0 = 10;
    WriteFile(m_hAudioFiletest0, (void*)m_AudioDatatest0, 10, &dwLentest0, NULL);

    BYTE m_AudioDatatest1[10];
    DWORD dwLentest1 = 10;
    HANDLE m_hAudioFiletest1 = CreateFile(".\\AudTest.dat",
    GENERIC_READ,
    FILE_SHARE_READ, 
    NULL, 
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_READONLY,
    NULL);

    ReadFile(m_hAudioFiletest1, (void*)m_AudioDatatest1, 10, &dwLentest1, NULL);
    for(int i=0; i<10; i++)
    {
    if(m_AudioDatatest0[i] != m_AudioDatatest1[i])
    AfxMessageBox("File Read Error!");
    }大家看看这样读会有什么问题吗?
    为什么最后比较就是不对呢?
      

  2.   

    写完之后,文件指针已经移到了文件末尾,这时候去读当然没有内容。
    可以这样做:
    1、SetFilePointer()将文件指针移到文件头,然后ReadFile();
    或者
    2、CloseHandle(),再CreateFile()重新打开,再ReadFile().