C# 五十、文件操作与文件流 二

本文深入探讨了不同文件编码标准如ASCII、GB2312、GBK、UTF-8和Unicode的特点及适用场景,同时提供了C#中文件流操作的具体实例,包括创建、读写及资源释放的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件编码(码表)

ASCII

英文码表,每个字符占1个字节。(正数)

GB2312

兼容ASCII,包含中文。每个英文占一个字节(正数),中文占两个字节(负数)

GBK简体中文,兼容gb2312,包含更多汉字。英文占1个字节(正数),中文占两个(1个负数,1个可正可负)GB18030
Big5

繁体中文

Unicode

国际码表,中文英文都站2个字节。

UTF-8

国际码表,英文占1个字节,中文占3个字节。

文本文件编码:

文本文件有不同的存储方式,UTF-8ASCIIUnicode等,如果出现乱码一般就是编码的问题。

文本文件相关的函数一般都有一个Encoding类型的参数,取得编码的方式:Encoding.DefaultEncoding.UTF8Encoding.GetEncoding("GBK")。

乱码(只有文本文件才会乱码):原因:文本文件存储时采用的编码,与读取时采用的编码不一致。解决:采用统一的编码。

文件流

创建文件流语法格式: FileStream fileStream = new FileStream(参数); 

流操作的都是字节,不能直接操作字符串。

文件流的使用步骤

1 、创建文件流

FileStream fs = new FileStream(文件,文件操作模式,访问方式);

2、使用文件流,执行读写操作

fs.Write(参数1,参数2,参数3);

  • 参数1:表示将指定的字节数组中的内容写入到文件
  • 参数2:参数1的数组偏移量,一般为0;
  • 参数3:本次文件写入操作要写入的实际字节个数

3、清空缓冲区,关闭文件流,释放资源

fs.Flush();

fs.Close();

fs.Dispose();

读写操作代码示例:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Test_CSharp
{    
    class Program
    {       
        static void Main(string[] args)
        {

            using (FileStream fs = new FileStream(@"E:\Test\abc.txt", FileMode.Create, FileAccess.Write))
            {
                string s = "lalala";
                byte[] b = Encoding.UTF8.GetBytes(s);
                fs.Write(b, 0, b.Length);
            }


            using (FileStream ff = new FileStream(@"E:\Test\abc.txt", FileMode.Open, FileAccess.Read))
            {
                byte[] bb = new byte[1024];
                int i = ff.Read(bb, 0, bb.Length);
                if (bb.Length > 0)
                {
                    string ss = Encoding.UTF8.GetString(bb);
                    Console.WriteLine(ss);
                }
            }

            Console.ReadKey();
        }
    }
}

--->
lalala


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值