1.FileStream 读取文件
FileStream读取的文件为字节数组,与文件格式无关.(文件在内存中的真实状态为二进制保存)

 FileStream fs = new FileStream(filePathAndName, FileMode.Open,FileAccess.Read);byte[] FileByte = new byte[fs.Length];fs.Read(FileByte, 0, FileByte.Length);fs.Close();

由于byte只表示数值(0-255),因此,只有指定了编码方式,才能将byte转化为一个可见的字符串。此外,你不能通过任何方式输出字符串:既没有类似C++中printf(%s)的用法,也不能直接byte[].toString()。
如果想转化为字符串,需要给定编码,并进行如下调用:

string str= Encoding.ASCII.GetString(FileByte);

由于ASCII编码的范围是0-127,因此,对于byte[]中大于127的值,在转换之后会直接变为字符’?’。
由于byte不能直接显示为字符,因此,byte并不是作为字符的存储格式,而是常用于存储数据流

将byte[]数组转换为char[]数组

 char[] FileChar = new char[FileByte.Length];Decoder d = System.Text.Encoding.UTF8.GetDecoder();
d.GetChars(FileByte, 0, FileByte.Length, FileChar, 0);
Console.WriteLine(FileChar);

首先实例化编码器,并指定编码方式,将byte[]转换为char[]

2.FileStream写入文件
将char[] 使用FileStream 写入一个文件,首先要对char[]进行编码,将char[]转换为byte[]

char[] fileChar = "A Char Array".ToArray();
FileByte=new byte[FileChar.Length];
Encoder e = Encoding.UTF8.GetEncoder();
e.GetBytes(FileChar, 0, fileChar.Length, FileByte, 0, true);
FileStream fs2=new FileStream(loadFilePathAndName,FileMode.Create,FileAccess.Write);
fs2.Write(FileByte,0,FileByte.Length);
fs2.Close();

或者直接使用下面函数进行编码:

FileByte = Encoding.UTF8.GetBytes(FileChar,0,FileChar.Length);

3.StreamWriter
操作字节比较麻烦,fileStram首先要将字节按照指定的编码方式进行编码后(转为byte)才可以写入文件时,通常会创建一个StreamWriter 或者StreamReader,使用它们来处理文件
StreamWriter 可以将字符和字符串写入文件

由于一般直接使用File.Write()等方法,很少使用到StreamWriter,这里就直接贴资料中的代码:

使用StreamWriter写入文件

StreamReader与StreamWriter类似

总结:
FileStream Read到的数据流通常用来对文件进行存储,读到是文件真实的字节数组,所以便于传输.
将字节数组进行解码,按照指定的解码方式,会成为字节数组

StreamWriter 和StreamReader 可以直接操作字符和字符串,通常用来读取文件内容和向文件写入数据.

FileStream,StreamReader,StreamWiter的用法相关推荐

  1. filestream streamreader

    filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite ht ...

  2. C#中的StreamReader/StreamWriter

    在读写文件的过程中,Filestream只可以进行以字节为单位原始数据流进行读写操作,为此,C#中提供了功能更加强大的StreamReader/ StreamWriter来支持文件的读写. Strea ...

  3. 通过new创建xml文件_C#通过SharpZipLib库创建压缩文件

    在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用.如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度.最近在一个 C# 项目中用到了创建压缩文 ...

  4. c# getresponsestream返回byte[]_C#通过SharpZipLib库创建压缩文件

    在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用.如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度.最近在一个 C# 项目中用到了创建压缩文 ...

  5. 0505.Net基础班第十三天(面向对象多态)

    1.c#中的访问修饰符 public :公开的公共的 private:私有的,只能在当前类的内部访问 protected:受保护的,只能在当前类的内部以及该类的子类中访问. internal:只能在当 ...

  6. C#读取和写入文件(干货分享)

    一.读取文件 读取的文件内容不多: 可以使用 File.ReadAllText(FilePath) 可以指定编码方式  File.ReadAllText(FilePath, Encoding)的方法. ...

  7. SQL Server最受欢迎技巧:解读DBA

    http://tech.it168.com/a2010/0105/832/000000832829_all.shtml [IT168 技术分析]在向2009年告别之际,我们来回顾一下过去的一年中最受欢 ...

  8. C# NPOI初级使用

    文章目录 一.NPOI概述 二.使用过程 1. 获取安装 2. 基本概念 3. 基本操作 3.1. 创建一个excel文件 3.2. 往单元格写值 3.3. 文件保存 ⭐3.4. 一般用法 3.5. ...

  9. C# StreamReader/StreamWriter与FileStream用法详解

    一.<1>StreamReader类共有10个构造函数 StreamReader (Stream)    //  为指定的流初始化 StreamReader 类的新实例. FileStre ...

最新文章

  1. 19 条 MySQL 技巧,效率至少提高 3倍!
  2. 面试被问到Redis实现发布与订阅,手摸手教
  3. 理解VMware Team中的虚拟网络
  4. 如何在Python Interpreter中重新导入更新的包? [重复]
  5. 论如何监听一个对象所有属性的变化
  6. SpringBoot中自定义Banner(启动图案)
  7. 工厂模式-CaffeNet训练
  8. Linux命令之hexdump
  9. Apache Curator之分布式锁原理(二)
  10. sql server 日期类型
  11. uCOS-III应用开发笔记之一:uCOS-III在STM32的移植
  12. 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
  13. 使用 Caddy 替代 Nginx,全站升级 https,配置更加简单
  14. linux空间不足 进不了系统更新,ubuntu更新时提示/boot空间不足的解决方法
  15. Dockerfile 数据卷最佳实践
  16. 基于FPGA ZC706的AD9371ADRV9009网口驱动配置
  17. c代码实现matlab中对矩阵fftshift思路
  18. 项目启动管理、需求分析、可行性方案论证  IT项目管理
  19. ensp VRRP配置2
  20. 没有oracle 连接kettle,Kettle 连接 oracle

热门文章

  1. 华为最新全面屏手机鸿蒙系统,华为P50pro最新确认:麒麟1020+立体全面屏+鸿蒙系统,这才是华为...
  2. Azure IoT设备到云发送消息和CLI查看
  3. byte[] valu 转 ByteBuffer
  4. 如何将图片验证码转换为文字,图片识别。
  5. java进阶----集合
  6. 神经网络(Neutral Network)
  7. GDB定位诡异的FreeSWITCH编译问题
  8. 一个完整的SEO优化方案
  9. 测绘相关专业术语(一)
  10. 【标准文件免费下载】国家标准和行业标准 良心网站推荐