在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文实例讲述了.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);
编码问题 为什么中文会乱码? 总结起来,无论是36码的鞋子,穿在50码的脚丫子上。还是36码的脚丫子,穿50码的鞋。看起来都不会很舒服。 所以,按照什么格式写入,就按照什么格式读取。才是正解。 PS: 什么类可以Dispose( )? 1.Dispose()表示释放资源,.NET中对Dispose()有一个统一的约定或者叫描述。这个约定表现为一个接口。 或者说这个接口,是一个红头文件,红头文件中约定了如何释放资源。 那么类库中什么样的类会实现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程序设计有所帮助。 |
请发表评论