您的位置:首页 > 编程语言 > C#

C# 替换文本文件中的某一行 (要求此文件存在)

2013-05-21 21:32 399 查看
/// <summary>
/// LineIndex 表示新的内容所在的行位置
/// </summary>
/// <param name="sFileName"></param>
/// <param name="sOrigionContent"></param>
/// <param name="sNewLineContent"></param>
/// <param name="LineIndex"></param>
public static void SaveTxtReplaceOneLine(string sFileName, string sOrigionContent, string sNewLineContent, int iNewLineIndex)
{
try
{
StringBuilder sbNewSave = new StringBuilder();
sFileName = sFileName.Replace("|", "_");
string sFolder = Directory.GetParent(sFileName).ToString();
if (!System.IO.Directory.Exists(sFolder))
{
System.IO.Directory.CreateDirectory(sFolder);
}

if (!System.IO.File.Exists(sFileName))
{
throw new Exception("file not exist");
}

string[] arrLine = sOrigionContent.Trim().Split(Convert.ToChar(Keys.Return));
for (int i = 0; i < iNewLineIndex; i++)
{
sbNewSave.AppendLine(arrLine[i].Trim('\r').Trim('\n'));
}
sbNewSave.AppendLine(sNewLineContent);
for (int i = iNewLineIndex + 1; i < arrLine.Length; i++)
{
sbNewSave.AppendLine(arrLine[i].Trim('\r').Trim('\n'));
}

FileStream fsTxtWrite = new FileStream(sFileName, FileMode.Create, FileAccess.Write);
StreamWriter srWrite = new StreamWriter(fsTxtWrite, System.Text.Encoding.UTF8);
//StreamWriter srWrite = new StreamWriter(fsTxtWrite, System.Text.Encoding.Default);

srWrite.Write(sbNewSave.ToString().Trim());

srWrite.Close();
srWrite.Dispose();
fsTxtWrite.Dispose();

}
catch (Exception ex)
{
//MessageBox.Show(ex.Message);

#region ### error info
try
{
string sFolder = Directory.GetParent(sFileName).ToString();
string sErrFullName = sFolder + "_err_" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt";
if (!System.IO.File.Exists(sErrFullName))
{
FileStream fs;
fs = File.Create(sErrFullName);

StreamWriter srWrite = new StreamWriter(fs, System.Text.Encoding.UTF8);

srWrite.Write(sFileName);

srWrite.Close();
srWrite.Dispose();

fs.Close();
}
}
catch (Exception ex2)
{ }
#endregion ###error

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: