C#讀寫指定編碼格式的文本文件
在工作中經(jīng)常讀寫文本文件,在讀文件時,需要按開頭的兩個字節(jié)判斷文件格式,然后按該格式讀文件中的內(nèi)容。
寫文件時,也要按目標(biāo)文件指定的格式來寫入,只有這樣才能讓后續(xù)的環(huán)境正確讀入。
1 查看格式
在vs2010開發(fā)環(huán)境打開某個文件,然后從菜單上, 文件--高級保存選項,就可看到當(dāng)前文件的編碼格式。
比如,xx.cs,xx.cshtml文件看到的是[簡體中文(GB2312)-代碼頁936],就是GB2312。
xx.xml文件看到的是[Unicode(UTF-8帶簽名)-代碼頁65001],就是UTF-8。
常用的格式有:ASCII,UTF-8,UTF-7,UTF-32,Unicode,GB2312 。
2 讀格式文件為
Encoding encode=Encoding.GetEncoding("GB2312"));
可以使用后附的類,先讀文件的編碼格式
encode = fileEncode.GetFileEncodeType("in_file.txt");
string strStr1 = File.ReadAllText("in.txt", encode);
3 寫格式文件為
StreamWriter sw = new StreamWriter("out.txt", false, Encoding.GetEncoding("ASCII"));
sw.Write("12.3");
sw.Close();
4 根據(jù)文件的編碼格式讀寫文件的完整代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.IO;
using System.Configuration;
using System.Text;
namespace WebApplication1
{
//=1=按文件編碼格式讀寫
public partial class _Default : System.Web.UI.Page
{
string proj_name = "";
protected void Page_Load(object sender, EventArgs e)
{
string xml_in_file="c:\\part.xml";//輸入片段,其它程序生成的是一個節(jié)點
string xml_out_file="c:\\all.xml";//整體,新節(jié)點片段,要追加到其尾部
//1 讀入輸入文件的編碼格式,并按其編碼全部讀入文本
Encoding encode1 = fileEncode.GetFileEncodeType(xml_in_file);
StringBuilder strSb1 = new StringBuilder();
string strStr1 = File.ReadAllText(xml_in_file, encode1);
//
StringBuilder strSb = new StringBuilder();
strSb.Clear();
//2 讀入輸出文件的編碼格式,并按其編碼全部讀入文本
Encoding encode6 = fileEncode.GetFileEncodeType(xml_out_file);
strSb.AppendFormat("{0} \r\n", File.ReadAllText(xml_out_file, encode6));
strSb.Replace(strStr1, "");//舊的同名段落替換為空
//新節(jié)點片段,替換整體末尾標(biāo)簽,即是加入到末尾
strSb.Replace("</object_set>", strStr1 + "\r\n" + "</object_set>");//新的插入到末尾
// FileInfo myFile = new FileInfo(xml_out_file);
// StreamWriter sw = myFile.CreateText();
StreamWriter sw = new StreamWriter(xml_out_file, false, encode6);//Encoding.GetEncoding("GB2312"));
sw.Write(strSb.ToString());
sw.Close();
}
}
//=2=獲得文件編碼格式的類
public class fileEncode
{//獲得文件編碼格式的類
public static System.Text.Encoding GetFileEncodeType(string filename)
{
System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
Byte[] buffer = br.ReadBytes(2);
br.Close();
fs.Close();
if (buffer[0] >= 0xEF)
{
if (buffer[0] == 0xEF && buffer[1] == 0xBB)
{
return System.Text.Encoding.UTF8;
}
else if (buffer[0] == 0xFE && buffer[1] == 0xFF)
{
return System.Text.Encoding.BigEndianUnicode;
}
else if (buffer[0] == 0xFF && buffer[1] == 0xFE)
{
return System.Text.Encoding.Unicode;
}
else
{
return System.Text.Encoding.Default;
}
}
else
{
return System.Text.Encoding.Default;
}
}
}
}
以上就是C#讀寫指定編碼格式文本文件的方式方法,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
C#實現(xiàn)數(shù)據(jù)去重的方式總結(jié)
這篇文章主要來和大家一起來討論一下關(guān)于C#數(shù)據(jù)去重的常見的幾種方式,每種方法都有其特點和適用場景,感興趣的小伙伴可以了解一下2023-07-07
C#如何使用系統(tǒng)默認(rèn)應(yīng)用程序打開文件
本文介紹了如何使用System.Diagnostics.Process類的Start方法來打開文件,通過傳遞文件路徑作為參數(shù),系統(tǒng)會使用默認(rèn)應(yīng)用程序打開該文件,例如,如果文件擴展名為.txt,則會使用NotePad或WordPad打開;如果擴展名為.html,則會使用系統(tǒng)默認(rèn)瀏覽器打開2025-01-01
C#從數(shù)據(jù)庫讀取數(shù)據(jù)到DataSet并保存到xml文件的方法
這篇文章主要介紹了C#從數(shù)據(jù)庫讀取數(shù)據(jù)到DataSet并保存到xml文件的方法,涉及C#操作DataSet保存到XML文件的技巧,需要的朋友可以參考下2015-04-04
漢字轉(zhuǎn)拼音縮寫示例代碼(Silverlight和.NET 將漢字轉(zhuǎn)換成為拼音)
本篇文章主要介紹了漢字轉(zhuǎn)拼音縮寫示例代碼(Silverlight和.NET 將漢字轉(zhuǎn)換成為拼音) 需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01

