txt文件较大点,读入写出效率问题。

kuoma 2010-05-13 02:18:19
假设我今天有笔文字档,要取出从每一行的资料前几笔以,号分隔开的资料
怎样取速度会较快呢?

6545,5465,65456,654564,56456,测试
(有空行)
54564546,546,564,资料
564,资料
6545,5465,65456,654564,56456,测试
54564546,546,564,资料
6545,5465,56456,测试
54564546,546,564,资料
6545,5465,65456,654564,56456,测试
54564546,546,564,资料
6545,5465,65456,654564,56456,测试
564,资料
6545,5465,65456,654564,56456,测试
54564546,546,564,资料
6545,5465,65456,654564,56456,测试
54564546

假设要取"每行"前3笔记录输出结果如下
6545,5465,65456

54564546,546,564
564,资料
..........

假设要取"每行"前1笔记录输出结果如下
6545

54564546
564
..........

有无类似直接搜寻到第n个,号然后用类似取左边几个字元的方法,我想这样子比较快?
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuoma 2010-05-13
  • 打赏
  • 举报
回复
//目前程序大致的写法意思 只要前2笔资料
string tmp = "1,2,3,4,5,6,7";
string[] ary = tmp.Split(new char[] { ',' }, 3);
string getstr = ary[0] + "," + ary[1];//ary[0]="1" ary[1]="2" ary[3]="3,4,5,6,7"
//ary[3]="3,4,5,6,7" 这是无效的资料,但大量读个10000行的话这会有很多记忆体回收的问题
//且如果能以直接用找到第n个,(逗号)用substring取值应该会较快,回收较少。
kuoma 2010-05-13
  • 打赏
  • 举报
回复
题目假设一个档有10000行,我要取出10000行中的前3笔记录以,号分隔开的
我目前是用 一行一行读取 再用split(',',n)
取出前n个数组元素并成一行ary(0)+","+ary(1)+","++++ary(n)

因为每行split后最后一笔资料一定也有资料,但它不是我要的,所以理论上我用了10000行就产生了要回收无效数组元素10000笔,最终还是影响了性能大量的回收?因为档案多所以又会更慢

所以才会想说是否有较快的取法直接找出第n个,号直接用sbustring(0,到n个逗号位置)
mayonglong 2010-05-13
  • 打赏
  • 举报
回复
StreamReader.ReadLine()
split()
alldj 2010-05-13
  • 打赏
  • 举报
回复
readline.split(',')
deknight 2010-05-13
  • 打赏
  • 举报
回复
直接第N个好象不行吧,每次读一行,然后在这行里,分割
如果只取前5行,for int 1=1;i<6;i++ 循环一下

110,572

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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