【发布时间】:2014-05-26 12:58:31
【问题描述】:
我有 txt 文件(65mb)我需要逐行读取并更改每一行, 例如我有很多行
User=value Password=value Phone=123456789
User=value Password=value Phone=123456789
User=value Password=value Phone=123456789
我需要将信用卡/电话的第一个号码更改为*(安全原因),并获取这样的文本并保存,或者只是更改原始文本文件。
User=value Password=value Phone=*****6789
User=value Password=value Phone=*****6789
User=value Password=value Phone=*****6789
我构建新字符串并逐行添加(更改)而不是保存,但我花了很多时间这是我的代码
string NewPath = "";
string lineOfText;
string NewTextFile = "";
using (var filestream = new FileStream(FilePath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
{
var file = new StreamReader(filestream, Encoding.UTF8, true, 128);
while ((lineOfText = file.ReadLine()) != null)//here i reading line by line
{
NewTextFile += lineOfText.Substring(0, 124) + "************" +
lineOfText.Substring(136, lineOfText.Length - 136);
NewTextFile += Environment.NewLine;//here i make new string
}
}
NewPath = FilePatharr[1] + "\\temp.txt";
System.IO.File.WriteAllText(NewPath, NewTextFile);//here i save him
有人知道更好的方法吗,我的代码需要很长时间才能保存这个大文件。
更新
为什么这个问题我得到-2?这个问题有什么问题?我在这里只看到关于如何传递敏感数据和更多不属于这个问题的东西的错误答案当问题是 --> 更改 txt 文件并保存它的快速方法
我知道如何将文件速度从 100kb\sec 保存到 3MB\sec 现在需要 20 秒而不是像以前那样的 20 分钟
【问题讨论】:
-
我不是。我正在从 CyberArk File Exchange 下载此文件,公司正在制作此文件并将它们放在那里,我的目标是打开文件删除/将第一个 (5) 编号更改为 * *****6789
-
不要将 NewTextFile 缓冲成一个字符串,你应该将它写入新的文本文件并在之后重命名它。如果您的应用程序在
File.WriteAllText被终止,您将避免丢失数据 -
This 回答如何读取和处理大文件,写回应该是微不足道的。
-
当我说公司时,我并不是说那是我的公司,而是客户公司,他们以这样的文件发送给他们
标签: c# asp.net file filestream streamreader