问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

IO流,文件流等等?其中的流,指什么?怎么理解?

发布网友 发布时间:2022-04-24 01:11

我来回答

4个回答

懂视网 时间:2022-04-27 16:01

本文实例讲述了.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程序设计有所帮助。

热心网友 时间:2022-04-27 13:09

IO -- I 是 Input,即输入,读, O 是 Output 即输出,写。
IO流 指数据输入输出的流。数据传送是按顺序一个一个传递,如同流动。
大部分输入输出是同设备打交道,例如磁带,磁盘,光盘,打印机,屏幕,扫描仪,喇叭等。

文件流,从文件读入数据时的数据输入流,或向文件写数据时的数据输出流。

输入输出除了同设备打交道外,也可以有别的方式,例如内部读写。常见的sscanf(..)就是从字符串里读入数据,sprintf(..),往字符串里写入数据。

流 -- 指与输入输出设备有关的数据的流动,也指流动的数据本身。

热心网友 时间:2022-04-27 14:27

对IO流的理解其实很简单。不论输入输出,总需要和某个设备(输入输出端)打交道。其途径就是数据流。对不同的设备可能需要不同类型的数据流,so 就会产生各种不同以流为后缀便于理解的‘流名词’。。了解这些类型对理解IO流很有帮助。
===================================================================
枫舞叶飞添言:
建议看看这个知道帖子。
http://zhidao.baidu.com/question/29958108.html

热心网友 时间:2022-04-27 16:02

楼上解释的不错,相关的还有网络流和媒体流。
IO就是指的输入和输出。(包括文件,媒体,网络等)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见老婆光脚踩谷子 王者荣耀国服中,不论进入游戏还是没开始游戏,所有玩家发送的任何消息... 我的滴滴开空调活动怎么没了 为什么腾讯视频显示还是要流量看 没有联通中国结标志 电脑不能装win7买电脑时他们说只能装win10系统不能装win7 英雄联盟手游 手机lol游戏盒子现在叫什么? 英雄联盟手机盒子看不了比赛记录 手游英雄联盟视频在哪里看手机英雄联盟盒子在哪看我游戏中录的视频 英雄联盟盒子看视频只有声音没有画面,不是网速的问题,也不是电脑卡,是... 为什么英雄联盟盒子没发看视频 早上起床可以空腹喝点红酒吗 流是什么意思? 红酒是早上喝好还是晚上喝好? 早上可以喝葡萄酒吗 正宗粉蒸肉的做法是什么? 早上喝红酒对身体有好处吗? 早晨可以喝红酒吗 红酒早上能喝吗? 梦见打自己的妈妈周公解梦? 早上喝红酒好吗? 妈妈梦见别人的孩子出事是好事还是坏事 正宗的成都粉蒸肉,到底是怎样的正宗做法呢? 四川粉蒸肉怎么蒸? 粉蒸肉做法 正宗四川 四川粉蒸肉的做法 最正宗的做法有哪些 梦见妈妈被别人打,我去打别人 做梦梦见我妈妈打小孩子全部是血 四川粉蒸肉的做法最正宗的做法 周公解梦梦见母亲打自己的儿子? 正宗川味粉蒸肉做法 早上喝红酒有什么好处 早上可以喝红酒吗? 每天早上喝一杯红酒有什么好处? 红酒早上喝好还是晚上喝好啊 葡萄酒是早上喝还是晚上喝 好啊 早晨起床喝一点葡萄酒或者威士忌对身体好不好? 红酒早上喝还是晚上喝最好? 每天早上起来就喝点红酒会不会美容? 请问,早上空 腹喝红酒的好吗? 红酒睡前喝好,还是早上喝好 食用油安全问题有哪些 别吃了!这两个牌子的食用油查出大问题,问题出在哪? 食用油怎样辨别变质? 我们在市场选择食用油的时候,应该注重哪些问题? 食用油的问题 请大家一定要帮小弟解答下 谢谢了 去超市买食用油结果映入眼帘的有:花生油,菜籽油,玉米 汽车没电了打不着火让维修工来弄一般花多少钱 汽车没电了打不着火让维修工来弄一般花多少钱? 汽车没电打不着火了,该如何进行处理? 汽车打不着火怎样维修? 汽车打不着火有哪些原因的和维修方法?