2014-11-14 55 views
1

我正在打開一個文件,並逐行讀取它。每行都正在更改,然後寫入另一個文件。我需要將編碼更改爲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); 
       } 
      } 
     } 
    } 
} 

回答

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

您不能在同一個文件上(至少不使用過於複雜的代碼)執行此操作。用你想要的編碼創建一個新文件。

Encoding inEnc = .......; //Encoding.Default 
Encoding outEnc = Encoding.Unicode; 

File.WriteAllText(outfilename, File.ReadAllText(infilename, inEnc), outEnc);