我正在打开一个文件,并逐行阅读。每行都被更改,然后写入另一个文件。我需要将编码更改为UTF-16,但我找不到这样做的方法。有人可以帮忙吗?当然,这是c#。
using (var inputStream = File.OpenRead(sourceFile))
{
using (var inputReader = new StreamReader(inputStream))
{
using (var outputWriter = File.AppendText(destFile))
{
string tempLineValue;
while (null != (tempLineValue = inputReader.ReadLine()))
{
if (tempLineValue != "\t\t\t\t\t")
{
var newEndOfLine = string.Format("{0}Added Info\r\0\n\0", '\0');
var firstReplace = tempLineValue.Replace('\t', '\0');
var secondReplace = firstReplace + newEndOfLine;
outputWriter.WriteLine(secondReplace);
}
}
}
}
}
答案 0 :(得分:2)
您无法使用File.AppendText
。根据文档:http://msdn.microsoft.com/en-us/library/system.io.file.appendtext(v=vs.110).aspx,它只输出UTF-8。
相反,创建自己的StreamWriter(http://msdn.microsoft.com/en-us/library/3aadshsx(v=vs.110).aspx),这将允许您指定所需的任何编码。只需创建一个新的输出流并执行以下操作:
var outputStream = new FileStream(destFile, FileMode.Append, FileAccess.Write);
using (StreamWriter outputWriter = new StreamWriter(outputStream, Encoding.Unicode))
{
//do whatever write you want
}
答案 1 :(得分:1)
您无法在同一文件上执行此操作(至少不使用过于复杂的代码)。使用您想要的编码创建一个新文件。
Encoding inEnc = .......; //Encoding.Default
Encoding outEnc = Encoding.Unicode;
File.WriteAllText(outfilename, File.ReadAllText(infilename, inEnc), outEnc);