我目前正在嘗試讀取文件,修改內部的一些佔位符,然後將文件寫入輸出流。作爲aspx.net中的頁面響應的輸出流,我在那裏使用了OutputStream.Write方法(文件最後是一個附件)。有沒有更好的方法來寫入讀取和修改文本行並將它們寫入輸出流?
我原本:
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
while (readBytes < fs.Length)
{
tmpReadBytes = fs.Read(bytes, 0, bytes.Length);
if (tmpReadBytes > 0)
{
readBytes += tmpReadBytes;
page.Response.OutputStream.Write(bytes, 0, tmpReadBytes);
}
}
}
想事以後在我想出了以下內容:
foreach(string line in File.ReadLines(filename))
{
string modifiedLine = line.Replace("#PlaceHolder#", "NewValue");
byte[] modifiedByteArray = System.Text.Encoding.UTF8.GetBytes(modifiedLine);
page.Response.OutputStream.Write(modifiedByteArray, 0, modifiedByteArray.length);
}
但它看起來低效尤其是與轉換。所以我的問題是:有沒有更好的方法來做到這一點?
注意文件本身並不是很大,它是一個大約3-4 KB大小的文本文件。
爲什麼你讀取字節而不是文本,如果你有什麼是文本? – Albireo
Response.WriteLine(modifiedLine);'? – Luaan
@Albireo最初的代碼不是來自我(我接管了那個項目)。我猜這是因爲當時他使用.Write爲OutputStream,他不想轉換讀取的字節,因此使用FileStream .Read方法和讀取字節,而不是文本) – Thomas