当你读通过字节文件字节,它可以花费太长的时间。我建议你在循环中读取一个字节块(例如1024或2048)。然后,在你读过的块中,使用正则表达式来匹配你的角色,特别是如果你有一个非常大的文件。
示例代码将是这样的:
private string GetFileData(string fileName, string matchChar)
{
StringBuilder x = new StringBuilder();
int blockCount = 2048;
int offset = 0;
string pattern = matchChar;
int k = -1;
using (var sr = new System.IO.FileStream(fileName, System.IO.FileMode.Open))
{
while ((sr.CanRead) && (k != 0))
{
byte[] bt = new byte[blockCount];
k = sr.Read(bt, 0, blockCount);
string so = System.Text.UTF8Encoding.UTF8.GetString(bt);
var m = new System.Text.RegularExpressions.Regex(pattern).Matches(so);
foreach (System.Text.RegularExpressions.Match item in m)
{
x.Append(item.Value);
}
}
}
return x.ToString();
}
你会称这个为
GetFileData(@"c:\matchtest.ono", "a");
http://stackoverflow.com/questions/21078/whats-the-best-string- concatenation-method-using-c – 2011-05-29 04:55:16
-1:将来,提供一个更接近于你实际正在做的事情(实际上是C#)的代码示例将有助于答复者写出比超过一般的'使用'StringBuilder'”。例如,你是如何阅读文件的,你是否真的在检查每个字符,你串联的字符串是否真的是单个字符等。 – 2011-05-29 05:37:23