C(※)符号化フォーマットを指定したテキストファイルを読み、書きます。
3883 ワード
仕事中はよくテキストファイルを読み、ファイルを読むときは、最初の2バイトでファイル形式を判断し、その形式でファイルの内容を読む必要があります。
ファイルを書く時も、ターゲットファイルの指定したフォーマットに従って書き込みます。これで後続の環境が正しく読み込まれます。
1表示形式
vs 2010開発環境であるファイルを開き、メニューからファイル→高度な保存オプションを選択すると、現在のファイルの符号化フォーマットが表示されます。
例えば、XXX.cs、x.cshtmlファイルが見たのは「簡体字中国語(GB 2312)-コードページ936」で、GB 2312です。
x.xmlファイルは「Unicode(UTF-8署名付き)-コードページ65001」を見ました。UTF-8です。
一般的なフォーマットはASCII、UTF-8、UTF-7、UTF-32、Unicode、GB 2312です。
2フォーマットファイルを読みます
ファイルを書く時も、ターゲットファイルの指定したフォーマットに従って書き込みます。これで後続の環境が正しく読み込まれます。
1表示形式
vs 2010開発環境であるファイルを開き、メニューからファイル→高度な保存オプションを選択すると、現在のファイルの符号化フォーマットが表示されます。
例えば、XXX.cs、x.cshtmlファイルが見たのは「簡体字中国語(GB 2312)-コードページ936」で、GB 2312です。
x.xmlファイルは「Unicode(UTF-8署名付き)-コードページ65001」を見ました。UTF-8です。
一般的なフォーマットはASCII、UTF-8、UTF-7、UTF-32、Unicode、GB 2312です。
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ファイルのコードフォーマットに従ってファイルの完全なコードを読み、書きます。
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";// ,
string xml_out_file="c:\\all.xml";// , ,
//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
", File.ReadAllText(xml_out_file, encode6));
strSb.Replace(strStr1, "");//
// , ,
strSb.Replace("</object_set>", strStr1 + "\r
" + "</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(※)で指定された符号化形式の文書を読み書きする方法ですので、皆さんの勉強に役立ててください。