如何将大量内容快速写入TXT文档

RainStarNetwork 2010-06-30 12:49:42
现有大量数据要写入TXT文档,数据通过一个循环组合成了一个字符串。然后要写入部分文档
我先行的C#代码是
for (int i = 0; i < Records.Count; i++)
{
string info = string.Empty;
info = GetRecordsInfo(Records[i]);
File.AppendAllText(filename, info);
}
其中filename为文件名,info通过一个函数运算得到一个字符串。
现在问题是这样的话频繁操作IO,速度也不快。
试过改成如下
string info = string.Empty;
for (int i = 0; i < Records.Count; i++)
{
info += GetRecordsInfo(Records[i]);

}
File.AppendAllText(filename, info);
但是速度一样不快,原因是Records.Count数量比较大, GetRecordsInfo(Records[i])得到的内容比较长
请问有没有更好的方法,请高手们提示一下。谢谢
...全文
640 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ben_jli 2011-09-26
  • 打赏
  • 举报
回复
这比喻真牛逼
[Quote=引用 9 楼 cancerser 的回复:]

没有啥办法
小学题,一个水塘的水流到另一个水塘,在只有一个口的情况下 你咋整都那样
而且一个池塘只能开一个口。
流就这点缺陷。

分成多份,同时存多个文件吧,只要系统IO顶的住就快很多
[/Quote]
q107770540 2010-06-30
  • 打赏
  • 举报
回复
另开一个线程 让系统在那边自己慢慢写
你该干吗干吗
s8975565 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cancerser 的回复:]
没有啥办法
小学题,一个水塘的水流到另一个水塘,在只有一个口的情况下 你咋整都那样
而且一个池塘只能开一个口。
流就这点缺陷。

分成多份,同时存多个文件吧,只要系统IO顶的住就快很多
[/Quote]
+1
cancerser 2010-06-30
  • 打赏
  • 举报
回复
没有啥办法
小学题,一个水塘的水流到另一个水塘,在只有一个口的情况下 你咋整都那样
而且一个池塘只能开一个口。
流就这点缺陷。

分成多份,同时存多个文件吧,只要系统IO顶的住就快很多
A_A66 2010-06-30
  • 打赏
  • 举报
回复
支持一个!
加油馒头 2010-06-30
  • 打赏
  • 举报
回复
一次写入内存,数据量大会卡死

  • 打赏
  • 举报
回复
StringBuilder 处理字符串快很多
aofengdaxia 2010-06-30
  • 打赏
  • 举报
回复
可以使用StringBuilder。把内容全部写到里面,然后一次性写入文本,看看是不是快一些
RainStarNetwork 2010-06-30
  • 打赏
  • 举报
回复
我已经是在线程中进行上述处理,但是太慢,想优化一下。

我要写入的内容要经过一定的处理才能得出字符串的。有人建议先写入内存,然后再一次性写入会比较快,但是第二种方法好像就是如此,但由于太多的字符串相加操作,反而更慢了
wanghui0380 2010-06-30
  • 打赏
  • 举报
回复
1。我在想为啥不直接使用xml,如果Records是dataset或datatable你大可以直接write到xml里
如果Records是普通对象,你大可以直接序列化

2。如果是csv文件,则大可以直接是sql直接输出他,由数据库直接生成csv文件的速度比较快

3。如果是常规型文本,我更愿意使用T4模板引擎来完成(虽然模板引擎的生成速度未必很快,好在数据和格式分开,俺们只提供数据就成,格式模板引擎会自己按规则完成)
winner2050 2010-06-30
  • 打赏
  • 举报
回复
同意楼上。
1.linux系统介绍 以windows为内核的操作系统有哪些:win10   win8   win7  xp  系统    windows server 以linux为内核的操作系统有哪些:centos  ubuntu  debian   windows和linux  linux:服务器   安全    稳定 高效    windows:办公  家用  2.安装linux注意事项 对centos系统 的基本使用   有哪些文件夹   对文件/文件夹 进行操作  创建 删除  修改 移动 复制   写入 home 存放所有用户文件的根目录  soft :安装软件 cd  ll mkdir 创建文件  touch 空文件  echo sdsd>a.txt       vi a.txt vi c.txt  打开文件  按下i键  改为写入的模式    写完之后保存: 先按下esc 按键再按下:w 保存 :q退出  :wq    写完之后不想保存 强制退出  esc  :q! 删除文件/文件夹 rm -rf a.txt  b.txt rm -rf soft 复制 如果复制文件 cp  要复制的文件名   复制出来的文件名子    cp  a.txt   a1.txt 如果复制的是文件夹的 cp -r soft/   soft1 展示一个文件中的内容 cat  移动文件  mv  temp1   temp2 重命名 mv  temp1   temp2 查找: find /(查找的路径)  -name   *.txt    b 清屏  clear tab 按键 可以帮助我们把输入的内容补全   3.配置局域网  需要通过ssh软件远程操作linux系统 远程操作centos系统  在windows操作系统中通过一款软件来远程操作虚拟电脑中的centos系统  ssh软件: xshell  secureCRT 第一步在win10系统中下载并且安装ssh软件 secureCRT    第二步:只要知道centos系统所在电脑的公网IP  登录账户和密码      /  win10和centos系统所在的两台电脑在同一个局域网内  局域网IP  登录账户和密码 第三步:centos系统 进行局域网的设置 往网卡中写入一些数据   win10写入的方式:桌面的化操作和centos系统写入的方式是不一样的  ip 网关 子网掩码 NM_conteolle。。。 命令  找到往网卡写入数据的文件    重新启动网络服务 开启22端口   重启防火墙服务 网络桥接网络  *************************端口是否开启  4.配置外网  下载软件1.下载并且安装到系统中 node.js环境   npm install bootstrap   默认的镜像库 centos系统    yum install  服务名     默认的镜像库  2.自己下载服务  wget 服务的网络地址 自己单独安装  比较灵活 安装难度大 windows系统  exe文件 linux       rpm包

110,539

社区成员

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

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

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