千家信息网

.NET中的IO操作文件流的用法分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解".NET中的IO操作文件流的用法分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习".NET中的IO操作文件流的用法分析"吧!本文实例讲述
千家信息网最后更新 2026年10月31日.NET中的IO操作文件流的用法分析

本篇内容主要讲解".NET中的IO操作文件流的用法分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习".NET中的IO操作文件流的用法分析"吧!

本文实例讲述了.NET中的IO操作之文件流用法。分享给大家供大家参考。具体分析如下:

读操作

复制代码 代码如下:

//1.创建文件流
FileStream fsRead =new FileStream("1.txt",FileMode.Open);
//2.创建缓冲区,正常情况下,是不会直接等于文件大小的。这里只有读,所以就这么干了。
byte[] bytes =new byte[fsRead.Length];
//3.开始读取, 返回值是读取到的长度。
int r =fsRead.Read(bytes,0,bytes.Lenght);
//4.关闭释放流
fsRead.Close();
fsRead.Dispose();

写操作

复制代码 代码如下:

//1.创建写入的文件流
FileStream fsWrite fsWrite =new FileStream(@"xxx",FileMode.OpenOrCreate);
//2.创建缓冲区
String msg ="HelloWorld";
byte[] bytes =Enconding.UTF8.GetBytes(msg);
//3.开始写入
fsWrite.Write(bytes,0,bytes.Length);
//4.关闭
fsWrite.Close();
fsWrite.Dispose();

byte数组与string之间的转换

在文件流写入的时候,经常需要string 和 byte数组之间的转换。
这里简单的描述一下,这方面的做法。

1.string 到 byte[]数组。

复制代码 代码如下:

string msg ="HelloWorld";
//使用UTF8编码
byte[] bytes =System.Text.Encoding.UTF8.GetByte(msg);
//使用系统默认编码
byte[] bytes =System.Text.Encoding.Default.GetByte(msg);



2.byte[]到string

复制代码 代码如下:

string newMsg =System.Text.Encoding.UTF8.GetString(bytes);

编码问题

为什么中文会乱码?
UTF8 编码中,一个中文字符占用两个字节。
GBK 编码中,一个中文字符占用三个字节。
UTF8 编码中,用两个字节保存一个汉字,如果你用GBK读取,按照三个字节一个字的格式去读。当然乱码了。反之也是一样的。

总结起来,无论是36码的鞋子,穿在50码的脚丫子上。还是36码的脚丫子,穿50码的鞋。看起来都不会很舒服。

所以,按照什么格式写入,就按照什么格式读取。才是正解。

PS:
1.Utf8是国际标准。
2.GB2312 是国标编码,支持中文的。
3.GBK是对GB2312的扩展,支持繁体中文。

什么类可以Dispose( )?

1.Dispose()表示释放资源,.NET中对Dispose()有一个统一的约定或者叫描述。这个约定表现为一个接口。

或者说这个接口,是一个红头文件,红头文件中约定了如何释放资源。
所有实现了IDisposable接口的类都可以释放,可以Dispose();

那么类库中什么样的类会实现IDisposable接口呢?
我的理解是这样的,一般仅占用托管堆中内存资源的类或对象。一般不需要Dispose()。垃圾回收就搞定了。
但是对于文件句柄,网络端口号,数据库连接等,CLR的垃圾回收机制是不管的。
所以一般这部分内容需要实现IDisposable接口。
文件流操作的异常处理

复制代码 代码如下:

//只有把fs定义在这里,finally中才能引用得到。
FileStream fs =null;
try
{
fs =new FileStream(@"文件路径",FileMode.Create);
byte[] bytes = Encoding.Default.GetBytes("HelloWorld");
fs.Write(bytes,0,byte.Length);
}
finally
{
if(fs != null) //如果fs未赋值,那么直接Dispose就会引发空指针异常。
{
fs.Dispose();
}
}


简化上述的写法,虽然严谨但是稍微有点麻烦。Microsoft提供了语法糖。
就是using的语法

复制代码 代码如下:

using(某个可以释放资源的类)
{
操作
}
//1.操作执行完,会自动释放。
//2.using语句编译完成以后,会形成跟上面类似的代码。就是使用try finally。


StreamWriter和StreamReader

复制代码 代码如下:

//按行写入
StreamWriter sw =new StreamWriter(@"target",true,Encoding.GetEnconding("GB2312"));
sw.WriteLine("HelloWorld");

//按行读取
StreamReader sr =new StreamReader(@"Source");
sr.ReaderLine(); //每次返回一个字符串

到此,相信大家对".NET中的IO操作文件流的用法分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

代码 文件 编码 接口 中文 分析 字节 资源 内容 字符 数组 格式 约定 三个 两个 之间 乱码 只有 垃圾 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 互联网新科技 哈尔滨大商圈互联网科技有限公司 科技互联网产品 互联网属科技 万易互联网科技有限公司 米客互联网科技 山东吉时兔互联网科技有限公司 常德市电业局互联网科技部 湖南诚度互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 江阴互联网智能科技产品进口 燊美集互联网科技有限公司 晋城互联网科技 无锡工业互联网科技有限公司 广州有谷有贝互联网科技有限公司 恒生互联网科技趋势 银川新华互联网科技学校招聘 恒生科技互联网指数十大成分股 互联网科技企业文化 科技创新与互联网经济 互联网金融 科技 互联网科技公司有哪些 科技互联网创业计划书 茂名市互联网科技产业园 明优互联网科技有限公司 科技赋能视角下互联网保险发展 保险科技服务互联网营销体系 互联网金融科技元年 科技互联网专业务虚会材料
0