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. python: 生成guid

    其实经常需要生成一个guid,在各种场合使用...也简单写个小脚本实现吧. 实现下来发现速度比较慢... import uuid import sys def show_ver(): print 'g ...

  2. ref和out

    网上对这两个关键字的讨论,已经很多了,先给出一个链接:http://blog.csdn.net/xiaoning8201/article/details/6893154 自己做几条笔记,记得牢一些: ...

  3. MySQL主从修复

    MySQL主从故障修复 测试库:192.168.1.2 主192.168.1.3 从 192.168.1.4 主 4又是2的从库192.168.1.5 从 有人修改了192.168.1.2和192.1 ...

  4. mac安装cocoapods

    sudo gem install cocoapods

  5. JavaScript Tutorial

    JavaScript Tutorial http://javascript.info/root Object.create rabit.hasOwnProperty('eats') Object.ge ...

  6. C++中使用心得

    1.struct成员默认访问方式是public,而 class默认访问方式是private! 2.exit函数终止程序执行会调用析构函数 ,abort函数终止程序不会调用析构函数! 3.静态局部变量直 ...

  7. Windows下将txt导入MySQL及远程连接设置

    1.修改字符编码,全部修改为gbk.这样修改,重启后又会恢复默认值. show variables like '%char%'; set character_set_database=gbk; 其中, ...

  8. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  9. Android Bluetooth Stream Non-blocking Communication Tutorial

    This is a tutorial for Android to do non-blocking bluetooth socket communication. I am using 32feet ...

  10. 机器学习中的数学-矩阵奇异值分解(SVD)及其应用

    转自:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 版权声明: 本文由LeftNotE ...