FileStream,StreamReader,StreamWiter的用法
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的用法相关推荐
- filestream streamreader
filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite ht ...
- C#中的StreamReader/StreamWriter
在读写文件的过程中,Filestream只可以进行以字节为单位原始数据流进行读写操作,为此,C#中提供了功能更加强大的StreamReader/ StreamWriter来支持文件的读写. Strea ...
- 通过new创建xml文件_C#通过SharpZipLib库创建压缩文件
在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用.如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度.最近在一个 C# 项目中用到了创建压缩文 ...
- c# getresponsestream返回byte[]_C#通过SharpZipLib库创建压缩文件
在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用.如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度.最近在一个 C# 项目中用到了创建压缩文 ...
- 0505.Net基础班第十三天(面向对象多态)
1.c#中的访问修饰符 public :公开的公共的 private:私有的,只能在当前类的内部访问 protected:受保护的,只能在当前类的内部以及该类的子类中访问. internal:只能在当 ...
- C#读取和写入文件(干货分享)
一.读取文件 读取的文件内容不多: 可以使用 File.ReadAllText(FilePath) 可以指定编码方式 File.ReadAllText(FilePath, Encoding)的方法. ...
- SQL Server最受欢迎技巧:解读DBA
http://tech.it168.com/a2010/0105/832/000000832829_all.shtml [IT168 技术分析]在向2009年告别之际,我们来回顾一下过去的一年中最受欢 ...
- C# NPOI初级使用
文章目录 一.NPOI概述 二.使用过程 1. 获取安装 2. 基本概念 3. 基本操作 3.1. 创建一个excel文件 3.2. 往单元格写值 3.3. 文件保存 ⭐3.4. 一般用法 3.5. ...
- C# StreamReader/StreamWriter与FileStream用法详解
一.<1>StreamReader类共有10个构造函数 StreamReader (Stream) // 为指定的流初始化 StreamReader 类的新实例. FileStre ...
最新文章
- 19 条 MySQL 技巧,效率至少提高 3倍!
- 面试被问到Redis实现发布与订阅,手摸手教
- 理解VMware Team中的虚拟网络
- 如何在Python Interpreter中重新导入更新的包? [重复]
- 论如何监听一个对象所有属性的变化
- SpringBoot中自定义Banner(启动图案)
- 工厂模式-CaffeNet训练
- Linux命令之hexdump
- Apache Curator之分布式锁原理(二)
- sql server 日期类型
- uCOS-III应用开发笔记之一:uCOS-III在STM32的移植
- 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
- 使用 Caddy 替代 Nginx,全站升级 https,配置更加简单
- linux空间不足 进不了系统更新,ubuntu更新时提示/boot空间不足的解决方法
- Dockerfile 数据卷最佳实践
- 基于FPGA ZC706的AD9371ADRV9009网口驱动配置
- c代码实现matlab中对矩阵fftshift思路
- 项目启动管理、需求分析、可行性方案论证 IT项目管理
- ensp VRRP配置2
- 没有oracle 连接kettle,Kettle 连接 oracle