1、FileStream类的读写操作

FileStream类可以对任意类型的文件进行读取操作,而且我们也可以按照需要指定每一次读取字节长度,以此减少内存的消耗,提高读取效率。

代码实例:

//创建文件读取对象
using(FileStream fileReader=new FileStream (文件的物理路径,FileMode.Open))
{
//创建文件写入对象
using(FileStream fileWrite=new FileStream (需要保存的文件物理路径+文件后缀名,FileMode.Create))
{
//指定文件一次读取时的字节长度
byte[] by=new byte [1024*1024*10];
int count = 0;
while (true)
{
//将文件转换为二进制数据保存到内存中,同时返回读取字节的长度
count = fileReader.Read(by, 0, by.Length);
if (count == 0)//文件是否全部转换为二进制数据
{
break;
}
//将二进制数据转换为文件对象并保存到指定的物理路径中
fileWrite.Write(by, 0, count);
}
MessageBox.Show("OK");
}
}

2、SteamWriter类/StreamReader类的读写操作

StreamWriter/SteamReader的特点是,它只能对文本文件进行读写操作,可以一行一行的写入和读取。

代码实例:

static void Main(string[] args)
{
//创建文本文件读取对象
using (StreamReader s = File.OpenText(文本文件的物理路径))
{
string read = null;
while ((read = s.ReadLine()) != null)
{
Console.WriteLine(read);
}
}
}

3、File类的文件读取操作特点

File类它是一个静态类,这意味着我们不可以通过创建file类对象来对文件进行读写操作。当我们通过反编译工具来查看file类的那些静态方法时,我们可以发现,在这个类里面的方法封装了可以执行文件读写操作的对象,例如:Filestream,StreamWriter/StreamReader。这也说明了当我们通过调用File类的静态方法去执行任何文件的读写操作时,实际上是在该静态方法中创建了FileStream对象,并通过它来执行文件的读写操作。例如:File类的静态方法Create()

public static FileStream Create(string path);

同样的在对文本文件进行读写操作时也是调用了StreamWriter/StreamReader对象实现的。例如:

public static StreamWriter AppendText(string path);

File类是一次性的将文件进行读取和写入,如果文件是比较小的化,这无疑是对文件读写的效率进行提高,但是如果文件过大的话,会造成系统内存消耗过大,甚至内存溢出。

原文地址:http://www.cnblogs.com/Yanggulin/p/3769070.html?utm_source=tuicool&utm_medium=referral

C#四种文件流的区别(转)的更多相关文章

  1. 四种DCOM错误的区别,0x80080005 0x800706be 0x80010105 0x

    四种DCOM错误的区别Differences between the following DCOM error 0x800800050x800706be0x800101050x800706ba     ...

  2. *.pro、*.pri、*.prf、*.prl等四种文件

      尽管每次和cmake对比起来,我们总是说 qmake 简单.功能少.但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧: 不是太清楚CONFIG等变量到底如何起作用的 用过的qmak ...

  3. [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件

    转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...

  4. 小程序页面的四种文件(JSON、WXML、WXSS、JS)加载顺序

    一个小程序页面由四种文件组成: 1)json 页面配置文件 2)js 页面逻辑文件(必需) 3)wxml 页面结构文件(必需) 4)wxss 页面样式文件 这四个文件的加载顺序: 第一步: 加载页面j ...

  5. C++的四种cast操作符的区别--类型转换(转)

    转自:     http://welfare.cnblogs.com/articles/336091.html Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 r ...

  6. C++中四种转换类型的区别

    一.四种转换类型比较: 类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可 ...

  7. C++的四种cast操作符的区别--类型转换

    Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而 ...

  8. mysql中四种存储引擎的区别和选择

    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...

  9. php四种文件加载语句

    https://mp.weixin.qq.com/s/Wsn4grDRxVIgMfu__E_oWQ 1.include 2.require 3.include_once 4.require_once ...

随机推荐

  1. 解析php mysql 事务处理回滚操作(附实例)

    其实用PHP来处理mysql的事务回滚并不难,下面小编就详细的为大家介绍一下.相信大家看完之后都知道如何使用 很多新手在进行项目过程中,会碰到这样一种情况,如:论坛扣币项目中,用户支付论坛币的时候如果 ...

  2. 关于无限分类的树状输出(id,name,pid)类型的

    首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...

  3. 画了一张PHPCMSV9的运行流程思维导图

    转载:http://www.cnblogs.com/fuyunbiyi/archive/2012/03/12/2391253.html

  4. spring的配置

    web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&q ...

  5. 删除mysql的root用户恢复方法

    1.# service mysqld stop                             #停止mysql数据库服务Shutting down MySQL.. SUCCESS! 2.# ...

  6. Sales_item

    #ifndef SALESITEM_H #define SALESITEM_H // Definition of Sales_item class and related functions goes ...

  7. usb wifi driver run in ubuntu support 360/xiaodu and with 3.13.0-32-generic

    (为了实现usb-wifi用在linux系统上,需求解决方案,过程记录和如何实现) 重点解决3.13.0-32-generic内核编译 mt7601 usb wifi 驱动问题. 1:首先下载MT76 ...

  8. java 进制转化

    public static void toBinary(int num){ trans(num,1,1); } public static void toHex(int num){ trans(num ...

  9. TypeError: Object #<IncomingMessage> has no method 'flash'

    JavaScript相关代码: router.post('/reg', function(req, res) { //检验用户两次输入的口令是否一致 if (req.body['password-re ...

  10. EXT--表单AJax提交后台,返回前端数据格式的转换

    前言: 前端发送请求至服务端(Java),得到的数据是Java语言对象所表现的形式,经常需要转换为JSON格式的字符串写出至前端:当前端获取后也往往需要将字符串转换为js的对象.本文描述了在EXT作为 ...