CStdioFile 读取大数据的问题,请教高手大神?

louis_liux 2019-12-29 11:13:08
CStdioFile fr;
if(fr.Open(m_input,CFile::modeRead)==FALSE) m_input 为输入文件
return 0;

LONG64 flen=(LONG64)fr.GetLength(); 显示这里错误呢 调试状态下请问该如何处理呢
文本文件为3G多,编译的64位平台
文件格式为
123,2312,1211,122
123,2312,1211,122
123,2312,1211,122
。。。
...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2020-01-03
  • 打赏
  • 举报
回复
不确认是否等长,就一个char一个char去读,直到第236个'\n',然后fseek
schlafenhamster 2020-01-03
  • 打赏
  • 举报
回复
那 读一下 看 是不是 等 长
schlafenhamster 2020-01-03
  • 打赏
  • 举报
回复
读时 记住 每行 长度
int m_index=0;
int m_LineLen[xxxxx];
///////////////////////
while(flist.ReadString(buf, 260))
{
LineLen[index]=strlen(buf)+2;//"\r\n"
index++;
TRACE(_T("%s\n"), szLine);
}
louis_liux 2020-01-02
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
如果 数据 一行 等长 , 可以 seek 到 236*长度, 否则 写入时 要 保证 一行 等长
大神,这个有完整的代码吗?
louis_liux 2020-01-02
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
如果 数据 一行 等长 , 可以 seek 到 236*长度, 否则 写入时 要 保证 一行 等长
不确定是否等长呢,该怎么弄呢?
schlafenhamster 2020-01-02
  • 打赏
  • 举报
回复
如果 数据 一行 等长 , 可以 seek 到 236*长度, 否则 写入时 要 保证 一行 等长
louis_liux 2020-01-02
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
显示错误是编译错误还是运行错误?


void CDlg2Dlg::OnBnClickedButton1()
{
  CFileDialog dlg(TRUE);
  if(dlg.DoModal() == IDOK)
  {
    CStdioFile fr;
    try
    {
      CStdioFile fr(dlg.GetPathName(), CFile::modeRead|CFile::typeText);
      ULONGLONG uLen = fr.GetLength();
      CString szLine;
      while(fr.ReadString(szLine))
      {
        TRACE(_T("%s\n"), szLine);
      }
      fr.Close();
    }
    catch(CFileException *e)
    {
      e->ReportError();
      e->Delete();
    }
  }

}

这个读取指定行,该怎么写呢,比方我想一下子读到236行的内容?
louis_liux 2020-01-02
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
FileInfo finfo; char buf[260]; int col=0; fileList.empty(); CStdioFile flist; flist.Open("ListSaved.txt",CFile::modeRead | CFile::shareExclusive); while(flist.ReadString(buf, 260)) 一行一行读
这个读取指定行,该怎么写呢,比方我想一下子读到236行的内容?
schlafenhamster 2019-12-29
  • 打赏
  • 举报
回复
FileInfo finfo;
char buf[260];
int col=0;
fileList.empty();
CStdioFile flist;
flist.Open("ListSaved.txt",CFile::modeRead | CFile::shareExclusive);
while(flist.ReadString(buf, 260))
一行一行读
zgl7903 2019-12-29
  • 打赏
  • 举报
回复
显示错误是编译错误还是运行错误?


void CDlg2Dlg::OnBnClickedButton1()
{
  CFileDialog dlg(TRUE);
  if(dlg.DoModal() == IDOK)
  {
    CStdioFile fr;
    try
    {
      CStdioFile fr(dlg.GetPathName(), CFile::modeRead|CFile::typeText);
      ULONGLONG uLen = fr.GetLength();
      CString szLine;
      while(fr.ReadString(szLine))
      {
        TRACE(_T("%s\n"), szLine);
      }
      fr.Close();
    }
    catch(CFileException *e)
    {
      e->ReportError();
      e->Delete();
    }
  }

}

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧