读操作

//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();  //每次返回一个字符串

转载于:https://www.cnblogs.com/mcad/p/4205093.html

.NET中的IO操作之文件流相关推荐

  1. .NET中的IO操作基础介绍

    关于IO简介 .NET中的IO操作,经常需要调用一下几个类. 1.FileStream类        文件流类,负责大文件的拷贝,读写. 2.Path类                   Path ...

  2. java中的IO操作总结

    java中的IO操作 在java中IO涉及的范围比较大,本文主要针对文件内容的读写 对于文件内容的操作主要分为两大类: 字符流:有两个抽象类 writer Reader 其对应子类FileWriter ...

  3. C++ 学习笔记之——文件操作和文件流

    1. 文件的概念 对于用户来说,常用到的文件有两大类:程序文件和数据文件.而根据文件中数据的组织方式,则可以将文件分为 ASCII 文件和二进制文件. ASCII 文件,又称字符文件或者文本文件,它的 ...

  4. php 操作 PSD,PHP中使用Imagick操作PSD文件实例,_PHP教程

    PHP中使用Imagick操作PSD文件实例, 前提 复制代码 代码如下: $im = new Imagick("test.psd"); 获取图层数目 复制代码 代码如下: $nu ...

  5. python中io.textio_Python文件读写概述(IO操作、文件读写、stringiobytesio、序列化),python,的,小,总结,StringIOBytesIO...

    IO操作 在进行文件的读写之前,需要说明几点.首先,运行的程序和读取的数据都会在内存中缓存. 进入到 程序或数据 内存 其次,用python程序进行文件的读写,需要创建一个小工具–文件流,用来处理数据 ...

  6. C++ 流的操作 | 初识IO类、文件流、string流的使用

    文章目录 前言 IO头文件 iostream fstream sstream 流的使用 不能拷贝或对 IO对象 赋值 条件状态与 iostate 类型 输出缓冲区 文件流 fstream类型 文件模式 ...

  7. java中pdf写成base64文件流,Java操作pdf文件与Base64编码相互转换与文件流操作

    1.第一步,引入bc包的安装依赖. 在pom.xml中引入. org.bouncycastle bcprov-jdk15on 1.60 引入后reimport一下项目. 2.pdf文件转换成Base6 ...

  8. java中的IO操作总结(一)

    转载:http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.html    所谓IO,也就是Input与Output的缩写.在java中 ...

  9. go语言中的读写操作以及文件的复制

    目录 一.文件读写 1.读取文件中的数据: 2.写出数据到本地文件: 二.文件复制 1.方法一:io包下的Read()和Write()方法实现 2.方法二:io包下的Copy()方法实现 3.方法三: ...

最新文章

  1. 生产交接班管理系统的安装设置并下载
  2. [转]CentOS 7忘记root密码解决办法
  3. 动态规划训练14 [Max Sum Plus Plus HDU - 1024 ]
  4. sublime2使用和配置
  5. 宁德时代,想成为“绿巨人”
  6. Oracle 动态视图3 V$SESSION
  7. 基于同一主机配置 Oracle 11g Data Guard
  8. 2020 博客之星”年度总评选 TOP 200 名单已出,大家快来看看吧,同时欢迎围观技术大佬们
  9. 机器人学基础——位姿
  10. [RK3399][Android7.1] 移植笔记 --- 音频Codec RT5640添加
  11. 编程分钟转化小时怎么编_贴片机编程教程,编程步骤,编程怎么编
  12. java漫画pdf_Java并发编程学习宝典(漫画版)(PDF+HTML完结)
  13. windows2016小文件服务器,Windows Server 2016 搭建 SMB 共享文件
  14. 第13课:构建神经网络模型的实用建议
  15. lay-verify的失效情况
  16. 数据挖掘项目(一)Airbnb 新用户的民宿预定结果预测
  17. App Store应用TOP榜:究竟有多少款App在使用Swift?
  18. 一个开源vue网站博客,nuxt开源网站,前后端分离项目 1
  19. win怎么在计算机里按日期搜索文件,Win8系统如何按指定修改日期搜索文件
  20. 玉米社:抖音账号被限流了怎么办?一步步教你解除限制

热门文章

  1. 当程序崩溃的时候怎么办
  2. 日志管理最佳实践:成功的六要诀【解读版】
  3. 基于MATLAB FDATOOL的CIC滤波器设计
  4. python网络爬虫---selenium的使用
  5. pytorch 维度变化的时候应该使用什么方法permute
  6. 从源码分析DEARGUI之添加字体
  7. openface 和openpose(pytorch)剪枝之路
  8. 13.挂载点、文件系统、磁盘的命名、分区的命名
  9. (转)自动化管理工具Saltstack之nginx部署
  10. Unable to find remote helper for 'https'解决办法