知识大全 C#高级编程读写文本文件实例
Posted 文件
篇首语:不经过琢磨,宝石也不会发光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#高级编程读写文本文件实例相关的知识,希望对你有一定的参考价值。
C#高级编程读写文本文件实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
理论上 可以使用FileStream类读取和显示文本文件 前面已经介绍了这个类 上面显示NewFile txt文件的格式不太容易理解 但这并不是FileStream类的问题——而在于我们在文本框中显示结果所使用的方式 如果知道某个文件包含文本 通常就可以使用StreamReader 和 StreamWriter类更方便地读写它们 这是因为这些类工作的级别比较高 特别适合于读写文本 它们执行的方法可以根据流的内容 自动检测出停止读取文本较方便的位置 特别是 ●这些类执行的方法可以一次读写一行文本(StreamReader ReadLine() 和 StreamWriter WriteLine()) 在读取文件时 流会自动确定下一个回车符的位置 并在该处停止读取 在写入文件时 流会自动把回车符和换行符添加到文本的末尾 ●使用StreamReader 和 StreamWriter类 就不需要担心文件中使用的编码方式(文本格式)了 可能的编码方式是ASCII(一个字节表示一个字符)或者基于Unicode的格式 UNICODE UTF 和 UTF Windows x系统上的文本文件总是ASCII格式 因为Windows x系统不支持Unicode 但Windows NT XP和 都支持Unicode 所以文本文件除了包含ASCII数据之外 理论上可以包含Unicode UTF 或 UTF 数据 其约定是 如果文件是ASCII格式 就只包含文本 如果是Unicode格式 就用文件的前两个或三个字节来表示 这几个字节可以设置为表示文件中格式的值的特定组合 这些字节称为字节码标记 在使用标准Windows应用程序打开一个文件时 例如Notepad 或 WordPad 不需要考虑这个问题 因为这些应用程序都支持不同的编码方法 会自动正确地读取文件 StreamReader类也是这样 它可以正确读取任何格式的文件 而StreamWriter类可以使用任何一种编码技术格式化它要写入的文本 另一方面 如果要使用FileStream类读取和显示文本文件 就不必自己处理这个过程了 StreamReader类 StreamReader用于读取文本文件 用某些方式构造一个StreamReader要比构造一个FileStream实例更简单 因为使用StreamReader时不需要FileStream的一些选项 特别是不需要模式和访问类型 因为StreamReader只能执行读取操作 除此以外 没有指定共享许可的直接选项 但StreamReader有两个新选项 ●需要指定不同的编码方法所执行的不同操作 可以构造一个StreamReader 检查文件开头的字节码标记 确定编码方法 或者告诉StreamReader该文件使用某个编码方法 ●不提供要读取的文件名 而为另一个流提供引用 最后一个选项需要解释一下 因为它涉及到把读写数据的模型建立在流概念上的另一个优点 StreamReader工作在相对比较高的级别上 如果有另一个流在读取其他源的数据 就要使用由StreamReader提供的工具来处理这个流 因为这个流包含文本 此时StreamReader就非常有用了 可以把这个流的输出传送到StreamReader上 这样 StreamReader就可以读取和处理任何数据源(不仅仅是文件)中的数据了 前面在讨论BinaryReader类时也讨论了这种情况 但在本书中 只使用StreamReader来直接连接文件 其结果是StreamReader有非常多的构造函数 而且 还有两个返回StreamReader引用的FileInfo方法 OpenText() 和 CreateText() 下面仅说明其中一些构造函数 最简单的构造函数只带一个文件名参数 StreamReader会检查字节码标记 确定编码方法 StreamReader sr = new StreamReader(@ C: My Documents ReadMe txt ); 另外 如果指定UTF 编码方法 StreamReader sr = new StreamReader(@ C: My Documents ReadMe txt Encoding UTF ); 使用类System Text Encoding上的几个属性之一 就可以指定编码方法 这个类是一个抽象基类 可以根据这个类定义许多类 其方法可执行实际的文本编码 每个属性都返回相应类的一个实例 可以使用的属性包括 ●ASCII ●Unicode ●UTF ●UTF ●BigEndianUnicode 下面的示例解释了如何把StreamReader关联到FileStream上 其优点是可以显式指定是否创建文件和共享许可 如果直接把StreamReader关联到文件上 就不能这么做 FileStream fs = new FileStream(@ C: My Documents ReadMe txt FileMode Open FileAccess Read FileShare None); StreamReader sr = new StreamReader(fs); 对于本例 指定StreamReader查找字节码标记 以确定使用了什么编码方法 以后的示例也是这样 从一个FileInfo实例中获得StreamReader FileInfo myFile = new FileInfo(@ C: My Documents ReadMe txt ); StreamReader sr = myFile OpenText(); 与FileStream一样 应在使用后关闭StreamReader 如果没有这样做 就会致使文件一直锁定 因此不能执行其他过程(除非使用FileStream构造StreamReader和特定的FileShare ShareReadWrite) sr Close(); 介绍完实例化StreamReader后 就可以用该实例作一些工作了 与FileStream一样 我们仅指出可以用于读取数据的许多方式 您应在SDK文档说明书中查阅其他不太常用的StreamReader方法 所使用的最简单的方式是ReadLine() 该方法一次读取一行 但返回的字符串中不包括标记该行结束的回车换行符 string nextLine = sr ReadLine(); 另外 还可以在一个字符串中提取文件的所有剩余内容(严格地说 是流的全部剩余内容) string restOfStream = sr ReadToEnd(); 可以只读取一个字符 int nextChar = sr Read(); Read()的重载方法可以把返回的字符转换为一个整数 如果到达流的尾端 就返回 最后 可以用一个偏移值 把给定个数的字符读到数组中 // to read characters in int nChars = ; char [] charArray = new char[nChars]; int nCharsRead = sr Read(charArray nChars); 如果要求读取的字符数多于文件中剩余的字符数 nCharsRead应小于nChars StreamWriter类 StreamWriter类的工作方式与StreamReader的类似 但StreamWriter只能用于写入文件(或另一个流) 构造StreamWriter的方法包括 StreamWriter sw = new StreamWriter(@ C: My Documents ReadMe txt ); 上面的代码使用了UTF 编码方法 NET把这种编码方法设置为默认的编码方法 如果要指定其他的编码方法 StreamWriter sw = new StreamWriter(@ C: My Documents ReadMe txt true Encoding ASCII); 在这个构造函数中 第二个参数是Boolean型 表示文件是否应以追加方式打开 构造函数的参数不能仅是一个文件名和一个编码类 当然 可以把StreamWriter关联到一个文件流上 以获得打开文件的更多控制选项 FileStream fs = new FileStream(@ C: My Documents ReadMe txt FileMode CreateNew FileAccess Write FileShare Read); StreamWriter sw = new StreamWriter(fs); FileInfo不执行返回StreamWriter的任何方法 另外 如果要创建一个新文件 并开始给它写入数据 可以使用下面的代码 FileInfo myFile = new FileInfo(@ C: My Documents NewFile txt ); StreamWriter sw = myFile CreateText(); 与其他流类一样 在使用完后 要关闭StreamWriter sw Close(); 写入流可以使用StreamWriter Write()的 个重载方法来完成 最简单的方式是写入一个流 后面加上一个回车换行符 string nextLine = Groovy Line ; sw Write(nextLine); 也可以写入一个字符 char nextChar = ~a~; sw Write(nextChar); 也可以写入一个字符数组 char [] charArray = new char[ ]; // initialize these characters sw Write(charArray); 甚至可以写入字符数组的一部分 int nCharsToWrite = ; int startAtLocation = ; char [] charArray = new char[ ]; // initialize these characters sw Write(charArray startAtLocation nCharsToWrite); ReadWriteText示例 ReadWriteText示例说明了StreamReader和StreamWriter类的用法 它非常类似于前面的ReadBinaryFile示例 但假定要读取的文件是一个文本文件 并显示其内容 它还可以保存文件(包括在文本框中对文本进行的修改) 它将以Unicode格式保存文件 图 所示的ReadWriteText用于显示前面的NewFile aspx文件 但这次读取内容会更容易一些 这里不打算介绍给打开文件对话框添加事件处理程序的详细内容 因为它们基本上与前面的BinaryFileReader示例相同 与这个示例相同 打开一个新文件 将调用DisplayFile()方法 其惟一的区别是DisplayFile的执行方式 本例有一个保存文件的选项 这由另一个菜单项save来表示 这个选项的处理程序调用我们添加到代码中的另一个方法SaveFile()(注意 这个新文件总是重写原来的文件——这个示例没有写入另一个文件的选项) .NET编程免费提供,内容来源于互联网,本文归原作者所有。相关参考
用C#编程实现读写Binary 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文给出一个用C#
C#读写ini配置文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NETFramework类
探析C#文件方式读写结构体 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近一直在研究NetM
C#编程实现在Excel文档中搜索文本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixi
C#WinForm读写XML文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 建立一个WinF
C#list和文本文件转换 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! privateList
使用PHP程序直接调用文本文件的内容实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何用p
C#多线程编程实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题的提出 所谓单个写入程序
使用C#的BitmapData编程实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近要转开
C#GDI+绘图高级编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一般来说Windows的