[挑战难题]如何快速读取一个超长文本文件

uuwcl 2008-04-09 05:46:43
一个文本文件 有15M,共一行,10几万个字符组成,现在怎样才能快速读出来,放在字符变量中

还要考虑如果更多的情况

是否是二进制快一点?

具体的写法
...全文
95 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
uuwcl 2008-04-09
AfxMessageBox(pBuf);???
回复
ToddSong 2008-04-09
我默默的看下 今天第一次来两天 以后老老实实一点点向各位高人学习
回复
WingForce 2008-04-09
15m其实相当的小。。。不需要优化方法

实在要用,就文件内存映射,根据msdn改了一个

#include <windows.h>
#include <stdio.h>
#include <conio.h>

#define BUF_SIZE 256
TCHAR szName[]=TEXT("MyFileMappingObject");
TCHAR szMsg[]=TEXT("Message from first process");
TCHAR szFileName[]=TEXT("xxx.txt");

void main()
{
HANDLE hMapFile, hFile;
LPCTSTR pBuf;

hFile = CreateFile(szFileName, // file to open
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template

if (hFile == INVALID_HANDLE_VALUE)
{
printf("Could not open file (error %d)\n", GetLastError());
return 0;
}

hMapFile = CreateFileMapping(
hFile,
NULL, // default security
PAGE_READWRITE, // read/write access
0, // max. object size
BUF_SIZE, // buffer size
szName); // name of mapping object

if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE)
{
printf("Could not create file mapping object (%d).\n",
GetLastError());
return;
}
pBuf = (LPTSTR) MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0,
0,
BUF_SIZE);

if (pBuf == NULL)
{
printf("Could not map view of file (%d).\n",
GetLastError());
return;
}


//在这里访问pBuf,就是访问文件


UnmapViewOfFile(pBuf);

CloseHandle(hMapFile);
CloseHandle(hFile);
}
回复
申请了缓冲区,开读就是了。
回复
uuwcl 2008-04-09
有代码吗?
回复
Yofoo 2008-04-09
一次性全部读到内存中, 再到内存处理
回复
rageliu 2008-04-09
内存映射文件
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-09 05:46
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……