// 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();
把文件映射到内存就行了CreateFileMapping MapViewOfFile
请问 bohut(伯虎) 老师,GetFileLen()是从哪儿获得呀?
sorry,那是我的一个小函数 int GetFileLen(FILE *fp) { int n = 0; while(!feof(fp)) { fgetc(fp); n++; } rewind(fp); return n-1;}
也可以用api函数得到文件大小
int GetFileLen(FILE *fp) { int iLen; fseek(fp,0,SEEK_END); iLen= ftell(fdw); rewind(fdw); renturn iLen; }
int GetFileLen(FILE *fp) { int iLen; fseek(fp,0,SEEK_END); iLen= ftell(fp); rewind(fp); renturn iLen; }
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;
}
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();
MapViewOfFile
int GetFileLen(FILE *fp)
{
int n = 0;
while(!feof(fp))
{
fgetc(fp);
n++;
}
rewind(fp);
return n-1;}
{
int iLen;
fseek(fp,0,SEEK_END);
iLen= ftell(fdw);
rewind(fdw);
renturn iLen;
}
{
int iLen;
fseek(fp,0,SEEK_END);
iLen= ftell(fp);
rewind(fp);
renturn iLen;
}