File FileStream StreamReader StreamWriter C#

存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作。

这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO设备,就有FileStream,MemoryStream。

FileStream可以实现任意格式,任意大小文件的读取,但是它的方法只能读取字节,不能直接读取读字符串或读一行等等,操作偏底层。

各种流的专用读写类Reader和Writer,主要用于方便读写文本和字符串,这些类中不仅可以用来读取字节,也可以直接用于读取字符串或读一行。这些读写类的构造函数参数既可以是一个对应的流对象,也可以指定对应的文件路径。例如TEXT,String,Stream,HTTP都有对应的读写类。

File

小的文本文件(100M以下)直接用File类的ReadAllText()和WriteAllText()方法

这两个方法内部其实就是封装了StreamReader类的ReadToEnd()和StreamWriter类的WriteToEnd(),

这两个方法的返回值都是string类型,所以只能读写文本文件

小的文本文件的单行读写用StreamReader和StreamWriter这两个类

小的非文本文件用File类的ReadAllBytes()和WriteAllBytes()读写,并用byte[]作中转站

这两个方法内部其实就是封装了FileStream的Read()和Write()方法,

这两个方法的返回值都是byte数组,所以可以读写任何文件

大文件

但用File读写特大文件是会出错的,因为它虽然本质上用的是FileStream来读写,但是它的byte[]大小是写死了的(就是被读写文件的大小),所以它是将文件一次性全部读取或写入,文件非常大的时候往往会造成内存溢出,所以要用数据流FileStream,因为我们可以自由定义byte[]的大小,来保证内存不会溢出。

StreamReader, StreamWriter

其中的BaseStream中的Position并不能准确反映当前位置,发现Position是以2048为一个步幅增加的,因此明白是由于StreamReader采取了Buffer所致的。通过在.NET Framework SDK中查找发现,通过构造函数可以指定StreamReader的buffer size,但最小值是128,也就是,无法禁用StreamReader的buffer。

读写文件怎么样选取合适的类进行操作

首先看文件大小——如果是大文件则用FileStream,如果是小文件则看是否是文本文件——非文本文件则用File类的 ReadAllBytes/WriteAllBytes,是文本文件则看是否是单行读写——是则用StreamReader类/StreamWriter 类,不是则用File类的ReadAllText/WriteAllText。

任意类型的文件都可以用FileStream来读写

原文地址:https://www.cnblogs.com/suntp/p/8744971.html

时间: 2024-11-09 13:27:54

File FileStream StreamReader StreamWriter C#的相关文章

C#文件与流(FileStream、StreamWriter 、StreamReader 、File、FileInfo、Directory、directoryInfo、Path、Encoding)

(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo.Path.Encoding) C#文件与流(FileStream.StreamWriter .StreamReader .File.FileInfo.Di,有需要的朋友可以参考下. 文件与流(FileStream.StreamWriter .StreamReader .File.FileInfo.Directory.DirectoryInfo

操作文件方法简单总结(File,Directory,StreamReader,StreamWrite ) - Zery-zhang

一 基本介绍 操作文档,文件夹,需要用到的类 1 Directory (静态类) :      用于创建.移动和删除等操作通过 目录 和子 目录 DirectoryInfo (非静态): 2 File (静态类)  : 提供用于创建.复制.删除.移动和打开文件的静态类,并协助创建 FileStream 对象 FileInfo (非静态) 3 StreamReader : 实现一个 TextReader,使其以一种特定的编码从字节流中读取字符 StreamWriter : 实现一个 TextWri

C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件:复制代码 //文件流:读取 FileStream fileStream = File.Open(@"D:\test.txt", FileMode.Open);//初始化文件流 byte[] array = new byte[fileStream.Length];//初始化字节数组,用来暂存读取到的字节 fileStream.Read(array, 0, array.Length);/

filestream streamreader

filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite http://bbs.csdn.net/topics/280026654 基本相似,但是目标数组的类型不同,streamreader一个为char[],filestream一个为byte[]. http://developer.51cto.com/art/200908/143638.htm http:/

C#对文件/目录的操作:Path、File、Directory、FileStream、StreamWriter、StreamReader等类的浅析

一.Path:主要对文件路径的操作! 常用方法: String [email protected]"C:\a\b\c\123.txt"; 1-1.Path.GetFileName(path); //获得文件名:123.txt 1-2.Path.GetExtenSion(path); //获得后缀名:.txt 1-3.Path.GetFileNameWithoutExtension(path); //获得无后缀文件名:123 1-4.Path.GetDirectoryName(path)

File FileStream StreamWriter StreamReader文件读写操作方法

string path = "D:\\AccountChecking\\Test.txt"; string content = "abcdefg\r\nhigklmn\r\nopqrst"; //操作文件夹对象,无则创建文件夹,可以一次创建多级 Directory.CreateDirectory("D:\\AccountChecking\\"); #region File-对于文件的典型操作,如复制.移动.重命名.创建.打开.删除和一次将追加到单

C#中FileStream和StreamWriter/StreamReader的区别

首先致谢!转自:http://blog.sina.com.cn/s/blog_67299aec0100snk4.html 本篇可能不是非常深入,但是胜在清晰明了 FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能.这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据.这是这两种类的一个重要区别,如果你是准备读取byte数据的话,用StreamR

FileStream和BinaryReader,BinaryWriter,StreamReader,StreamWriter的区别

FileStream对于在文件系统上读取和写入文件非常有用,FileStream缓存输入和输出,以获得更好的性能.FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能.这是因为FileSteam类操作的是字节和字节数组,而Stream类操作的是字符数据.FileStream只能处理原始字节(raw byte),处理原始字节的功能使用FileStream类可以用于处理任何数据文件.通

C#读操作(字节/字符)Filestream、File、StreamReader

方法一:使用Filestream,将文本一次性全部转换为字节,之后转换为string显示在text中 OpenFileDialog fd = new OpenFileDialog(); fd.Filter = "文本文件|*.txt";       //打开文件的类型 if (fd.ShowDialog() == DialogResult.OK) { fn = fd.FileName; FileStream fs = new FileStream(fn, FileMode.Open,