TC官方合作论坛

 找回密码
 立即注册
查看: 995|回复: 6
打印 上一主题 下一主题

[问题] 求解超大纯文本读取方案,请大神提点一二

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-6 23:15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 renchin10025 于 2014-7-7 08:42 编辑

程序设计要求依行读取超过500W行的纯文本,每读取一行则赋值给变量,使用后再读取下一行

500行的文件大小大约100多M。如果程序开始时不卡死,程序也不占太多内存就更好了。

请问有办法实现吗?大神们请指教一二,新人真心求教。。。




回复

使用道具 举报

沙发
发表于 2014-7-7 11:12:11 | 只看该作者
每读一行赋给变量,得多少万个变量啊,要想不卡死就多线程吧,自己多尝试
回复 支持 反对

使用道具 举报

板凳
发表于 2014-7-7 11:45:12 | 只看该作者
100多M的文本,没有试过.
这里有一个思路,你自己测试一下看看:
用线程开启一个功能.
功能里是用  文件.读文件() 读出这个文本
然后用 "\r\n" 当分割标志,将读出的文本,分成一个以每行为一个单位的数组.
这样就达到了,一行对应一个变量.只是这个变量是一个数组成员.
你试一下.看成不成.主要是看读的时候,会不会卡很久.
回复 支持 反对

使用道具 举报

地板
发表于 2014-7-7 12:19:02 | 只看该作者
用读文件直接读不出来,可以用读一行试下.
  1. 空间 啊
  2. //默认空间
  3. 线程句柄 = 0
  4. //开始按钮_点击操作
  5. 功能 开始_点击()
  6.     路径 = 浏览框.获得("浏览框0")
  7.     如果(!文件.是否存在(路径))
  8.         返回 假
  9.     如果结束
  10.     如果(路径 == "" )
  11.         返回 假
  12.     如果结束
  13.     如果(线程句柄 == 0)
  14.         线程.开启("啊.我的线程",路径)
  15.     否则
  16.         线程.关闭(线程句柄)
  17.     如果结束
  18. 功能结束
  19. 功能 我的线程(路径)
  20.     变量 文本数组,大小,文件句柄
  21.     开始时间 = 系统.获取毫秒()
  22.     //文本 = 文件.读文件(路径)
  23.     文件句柄 = 文件.打开(路径)
  24.     循环(真)
  25.         文本 = 文件.读一行(文件句柄)
  26.         调试输出(文本)
  27.         //辅助.等待(10)
  28.         如果(文本=="")
  29.             跳出
  30.         如果结束
  31.     循环结束
  32.     文件.关闭(文件句柄)
  33.     用时 = 系统.获取毫秒() - 开始时间
  34.     调试输出(用时)
  35. 功能结束
  36. //退出按钮_点击操作
  37. 功能 退出_点击()
  38.    
  39.     辅助.退出()
  40. 功能结束

  41. 空间结束
复制代码
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-7-9 23:28:22 | 只看该作者
chentaotest 发表于 2014-7-7 11:12
每读一行赋给变量,得多少万个变量啊,要想不卡死就多线程吧,自己多尝试 ...

是的。。所以想找个一边运行。一边读取的方案。可是自己没想到。所以来求助大神们帮忙
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2014-7-9 23:29:47 | 只看该作者
小西 发表于 2014-7-7 11:45
100多M的文本,没有试过.
这里有一个思路,你自己测试一下看看:
用线程开启一个功能.

谢谢版主回复,我发问之前用的就是此方法。但CPU会卡50%很久。。读文件完成很快。主要是卡在"字符串.分割"这个命令..
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2014-7-9 23:33:23 | 只看该作者
csbadmin 发表于 2014-7-7 12:19
用读文件直接读不出来,可以用读一行试下.

谢谢回复,尝试用过读一行,但程序可能会继续上一次运行时的行.比如从100W行开始继续,所以读一行也不太适用.也许可以用多线程+读开关来控制...不过也不是很完美 .
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-26 09:15 , Processed in 0.158398 second(s), 25 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表