當你讀通過字節文件字節,它可以花費太長的時間。我建議你在循環中讀取一個字節塊(例如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