C#读写指定编码格式的文本文件

 更新时间:2020年6月25日 11:25  点击:1576

在工作中经常读写文本文件,在读文件时,需要按开头的两个字节判断文件格式,然后按该格式读文件中的内容。
 写文件时,也要按目标文件指定的格式来写入,只有这样才能让后续的环境正确读入。

1 查看格式
    在vs2010开发环境打开某个文件,然后从菜单上, 文件--高级保存选项,就可看到当前文件的编码格式。
  比如,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 根据文件的编码格式读写文件的完整代码

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\n", File.ReadAllText(xml_out_file, encode6));
      strSb.Replace(strStr1, "");//旧的同名段落替换为空
//新节点片段,替换整体末尾标签,即是加入到末尾
      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#读写指定编码格式文本文件的方式方法,希望对大家的学习有所帮助。

[!--infotagslink--]

相关文章

  • C#实现简单的登录界面

    我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望大家能够喜欢。...2020-06-25
  • 浅谈C# 字段和属性

    这篇文章主要介绍了C# 字段和属性的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下...2020-11-03
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#实现简单的Http请求实例

    这篇文章主要介绍了C#实现简单的Http请求的方法,以实例形式较为详细的分析了C#实现Http请求的具体方法,需要的朋友可以参考下...2020-06-25
  • C#中new的几种用法详解

    本文主要介绍了C#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧...2020-06-25
  • 使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • C#和JavaScript实现交互的方法

    最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
  • 经典实例讲解C#递归算法

    这篇文章主要用实例讲解C#递归算法的概念以及用法,文中代码非常详细,帮助大家更好的参考和学习,感兴趣的朋友可以了解下...2020-06-25
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • C#变量命名规则小结

    本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
  • c#中(&&,||)与(&,|)的区别详解

    这篇文章主要介绍了c#中(&&,||)与(&,|)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#绘制曲线图的方法

    这篇文章主要介绍了C#绘制曲线图的方法,以完整实例形式较为详细的分析了C#进行曲线绘制的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • c#自带缓存使用方法 c#移除清理缓存

    这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C#中list用法实例

    这篇文章主要介绍了C#中list用法,结合实例形式分析了C#中list排序、运算、转换等常见操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25