C#文件流FileStream

using System;
using System.IO;
using System.Text;

/**

  • 韩振飞
  • 在c#程序中,当操作变量与常量时,这些变量与常量的值是存放在内存中的,程序运行结束后,使用的数据会被清除
  • 。如果想长久保存程序中的数据,可以选择使用文本或数据库来存储。
  • 文件通常存放在本地磁盘的指定位置。可以是文本、文档、图片等形式。
  • 流:在C#中将这种通过不同输入/输出设备(键盘、内存、显示器、网络等)之间的数据传输抽象表述为“流”
  • 文件流:在计算机中,无论是文本、图片、音频还是视频,所有的文件都是二进制形式存储的。
  • c#专门针对文件的输入输出操作提供了一系列流,统称文件流:输入文件流 输出文件流
  • File类 FileStream类和 FileInfo类 操作文件的类
  • Directory和DirectoryInfo类属于操作目录的类
  • StreamReader类和StreamWriter类属于操作文本文件的类。
  • path类属于操作文件路径的类
  • C#字符编码解码 Encoder 和Decoder
  • Encoder可以将一组字符编码为一个字节序列
  • Decoder可以将已编码的字节序列解码为字符序列
  • 若要获取实例Encoder类,应用程序应使用Encoding下的 GetEncoder方法
  • GetByteCount方法确定多少个字节进行编码的一组Unicode字符
  • Decoder类似
    */

namespace FIle
{
class Program
{
static int len;
static void Main(string[] args)
{

        FileStreamWFunc();

        Console.ReadKey();

    }

    /// <summary>
    /// File是一个静态类
    /// </summary>
    static void FlieFunc()
    {   //创建文件
        File.Create(@"C:\Users\Administrator.BF-20201027ALCL\Desktop\12\Data.txt");
        
    }
    /// <summary>
    /// FileStream类表示在磁盘或网络路径上指向的文件的流。在文件中读写字节和字节数组的方法
    /// FileStream对象可以读取图像、声音、视频、文本等
    /// </summary>
    static void FileStreamFunc()
    {
        byte[] byteData = new byte[1024];

        char[] charData = new char[1024];

        using (FileStream aFile = new FileStream(@"C:\Users\Administrator.BF-20201027ALCL\Desktop\12\Data.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite))
        {
           //aFile.Seek(3,SeekOrigin.Begin);
            //从流中读取字节块到byteData数组中
           len =  aFile.Read(byteData,0,charData.Length);

        }
        //将字节数组和内部缓冲区中的字节解码为字符数组
        Decoder d = Encoding.UTF8.GetDecoder();
        d.GetChars(byteData, 0, byteData.Length, charData, 0);
        Console.WriteLine(charData);
       
        //============另外
        //字节数组看不懂,要进行解码 
        //string str = Encoding.UTF8.GetString(byteData,0,len);
        // Console.WriteLine(str);
    }

   
    static void FileStreamWFunc()
    {
        string path = @"C:\Users\Administrator.BF-20201027ALCL\Desktop\12\1.txt";
         byte[] byteData;
         char[] charData;
        using (FileStream Afile = new FileStream(path,FileMode.Create))
        {
            //charData = "Hello World Three People Walking".ToCharArray();
            charData = "三人行".ToCharArray();
            

           // Decoder e1 = Encoding.UTF8.GetDecoder();
            Encoder e = Encoding.UTF8.GetEncoder();
            //计算字符序列化需要的字节数组长度;
            byteData = new byte[e.GetByteCount(charData,0,charData.Length,true)];
            e.GetBytes(charData,0,charData.Length,byteData,0,true);
            //encoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
           // Afile.Seek(0,SeekOrigin.Begin);
            Afile.Write(byteData,0,byteData.Length);
        }
        //using (FileStream afile = new FileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite))
        //{
        //    charData = "三人行科技有限公司".ToCharArray();
        //    byteData = new byte[charData.Length];
        //    Encoding en = Encoding.UTF8;
        //    en.GetBytes(charData,charData.Length, byteData,byteData.Length);
        //    afile.Write(byteData,0,byteData.Length);
        //}
    }

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值