C#四种文件流的区别

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

C#四种文件流的区别,布布扣,bubuko.com

时间: 2024-08-02 19:19:01

C#四种文件流的区别的相关文章

【C++基础 10】四种cast转换的区别

简介 (1)c风格的转换 (T)expression; (2)c++风格的四种转换 static_cast<T>(expression); dynamic_cast<T>(expression); reinterpret_cast<T>(expression); const_cast<T>(expression); 1. c风格转换 int a = 1; double d = (double)a;//c风格转换 一般许多书本会建议使用c++提供的四种类型转换

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

尽管每次和cmake对比起来,我们总是说 qmake 简单.功能少.但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧: 不是太清楚CONFIG等变量到底如何起作用的 用过的qmake内置变量和函数不超过20个 看Qt Creator源码或者QtSolution等库中自己使用的 *.pro 文件就想看天书一样 本文只能抓住一条线,简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的,如何用的 *.pro qmake 的工程(pro ject)文件,这个大

VMware vSphere四种迁移类型的区别与适应场景

最近一直刚开始接触VMware vSphere这款虚拟化软件,每天的过程都是上午学新知识不理解,痛苦:下午实验各种出错,折磨:晚上回顾一天所学,五味陈杂,不过相比上午,下午已经好很多了.然后第二天依旧如此.虽然每天很受挫不过过得还挺充实. 昨天把四种迁移搞明白就很开心,这里给大家分享一下,愿你们看后有点收获,少走点弯路. 正文开始 下面这张图是这篇文字的核心内容.下文就是按这张图展开讲解的. 先简要解释一下四种迁移类型的基本概念 迁移–将虚拟机从一台主机或数据存储移到另一台主机或数据存储. 迁移

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

Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式.为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符.比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d; i = (int) d;或者: i = int (d); 对于具有标准定义转换的简单类型而言工作的很好.然而,这样

java四种文件读写方式及性能比较

测试代码 package com.boot.demo.test.io; import java.io.*; import java.lang.reflect.Method; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOp

java中四种访问修饰符区别及详解全过程

客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类. 类创建者:即创建新数据类型的程序员,目标是构建类. 访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分  : b.允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员  java的四个关键字:public.protected.default.private(他们决定了紧跟其后被定义的东西可以被谁使用) 适用范围<访问权限范围越小,安全性越高>   访问权限   类  

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

类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些.还有一个缺点就是,c风格的转换不容易查找,他由一个括号加上一个标识符组成,而这样的东西在c++程序

C++中四种强制类型转换的区别

使用标准C++的类型转换符:static_cast.dynamic_cast.reinterpret_cast和const_cast.1.static_cast    用法:static_cast<type_id> (expression)    该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性.它主要有如下几种用法:    (1)用于类层次结构中基类和派生类之间指针或引用的转换    进行上行转换(把派生类的指针或引用转换成基类表示)是安全的 

MS SQL四种Char类型的区别

--char:char类型空间一旦分配,就不会做自动收缩,就算没有存储满也需要占据指定分配的空间,如果存储过多,就会报错 --VarChar它会根据存储的内容的长度自动收缩,如果存储的内容小于指定的空间范围,那么多余的空间会收回.所以当存储的内容的长度波动较大的时候就考虑使用VarChar --n--代表是unicode字符,任何字符都占据两个字节空间 .当以后有中文字符的时候,就使用它. --NChar:NChar类型空间一旦分配,就不会做自动收缩,而且储存的任何字符都占据两个字节空间. --