我想把一个文件,比方说word文件,以二进制读到在内存开辟的一块空间中,请问应该怎么弄阿?我是新手,请多指教。

解决方案 »

  1.   

    fp = fopen(strFileName,"r");
    if(fp == NULL)
    {
    AfxMessageBox("找不到文件!");
    return;
    }
    int nFileSize = GetFileLen(fp); char *pBuf = new char[nFileSize + 1];
    fread(pBuf,1,nFileSize,fp);
    fclose(fp); CString strText = pBuf; if(pBuf)
    {
    delete pBuf;
    pBuf = NULL;
    }
      

  2.   

    CFile destFile;
    if (!destFile.Open("D:\\a.txt", CFile::modeWrite |
    CFile::shareExclusive | CFile::modeCreate, &ex))
    {
    TCHAR szError[1024];
    ex.GetErrorMessage(szError, 1024);
    cout << "Couldn't open source file: ";
    cout << szError;

    sourceFile.Close();
    return 1;
    }

    DWORD dwRead = destFile.GetLength();
    LPBYTE pbuffer = new BYTE[dwRead]; ZeroMemory(pbuffer, dwRead);

    // Read in 4096-byte blocks,
    // remember how many bytes were actually read,
    // and try to write that many out. This loop ends
    // when there are no more bytes to read.
    destFile.Read(pbuffer, dwRead);

    // Close both files

    destFile.Close();
      

  3.   

    把文件映射到内存就行了CreateFileMapping
    MapViewOfFile
      

  4.   

    请问 bohut(伯虎) 老师,GetFileLen()是从哪儿获得呀?
      

  5.   

    sorry,那是我的一个小函数
    int GetFileLen(FILE *fp)
    {
    int n = 0;
    while(!feof(fp))
    {
    fgetc(fp);
    n++;
    }
    rewind(fp);
    return n-1;}
      

  6.   

    也可以用api函数得到文件大小
      

  7.   

    int GetFileLen(FILE *fp)
    {
       int iLen;
       fseek(fp,0,SEEK_END);
       iLen= ftell(fdw);
       rewind(fdw);
       renturn iLen;
    }
      

  8.   

    int GetFileLen(FILE *fp)
    {
       int iLen;
       fseek(fp,0,SEEK_END);
       iLen= ftell(fp);
       rewind(fp);
       renturn iLen;
    }