C#中的文件操作

来源:互联网 发布:电子数据交换的例子 编辑:程序博客网 时间:2024/06/06 02:57

       最近由于工作上需要做一个自动化测试工具,开始学习了C#。C#是Microsoft 在2000 年7 月推出.NET Framework 的第1 版时提供的一种全新语言。它是一种简单、灵活且功能强大的语言,采用了面向对象的程序设计思想。由于在这之前习惯了用C语言,刚接触C#时感觉不太习惯,不过好在它易于学习,内部有很多现成的方法和接口供我们使用。今天这里我主要跟大家总结一下C#的文件操作。

       文件读写是许多.NET 应用程序的一个基础性工作。这里主要讨论用于创建、读写文件的主要类,支持在C#代码中处理文件系统的类。文件是在应用程序的实例之间存储数据的一种便利方式,它也可以用于在应用程序之间传输数据。文件可以存储用户和应用程序配置,以便在下次运行应用程序时检索它们。

1. 流

       在.NET Framework 中进行的所有输入和输出工作都要用到流(stream)。流是序列化设备(serial device)的抽象表示。序列化设备可以以线性方式存储数据,并可以按同样的方式访问:一次访问一个字节。此设备可以是磁盘文件、网络通道、内存位置或其他支持以线性方式读写的对象。把设备变成抽象的,就可以隐藏流的底层目标和源。流的类型主要有两种:

  • 输出流:当向某些外部目标写入数据时,就要用到输出流。这可以是物理磁盘文件、网络位置、打印机或另一个程序。

  • 输入流:用于将数据读入程序可以访问的内存或变量中。到目前为止,我们使用的最常见的输入流形式是键盘。

2.用于输入和输出的类

       System.IO 命名空间包含几乎所有的文件操作的类,所以必须在C#应用程序中引用此名称空间才能访问这些类,但无需完全限定类型名。下面介绍我在项目中主要用到的几个类。

  1. File类:静态实用类,提供许多静态方法,用于移动、复制和删除文件。可以在类上调用静态方法,而无需创建它们的实例。File类的一些常用的静态方法有Copy(),Create(),Move()和Delete()等。

  2. FileInfo类:FileInfo 类不像File 类,它不是静态的,没有静态方法,仅可用于实例化的对象。它表示磁盘或网络位置上的物理文件。该类包含处理此文件的方法。要完成对文件的读写工作,就必须创建Stream 对象。提供文件路径,就可以创建一个FileInfo对象:

                 FileInfo aFile = new FileInfo(@"D:\Log.txt");

           FileInfo 类也提供了与底层文件相关的属性,其中一些属性可以用来更新文件,其中很多属性都继承于FileSystemInfo。比如我们要获取文件的容量(以字节为单位),就可            以用属性Length,返回long值。这个属性是只读的。

        3. FileStream类:表示可写或可读,或二者均可的文件。此文件可以同步或异步地读写。FileStream 对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中               读写字节的方法,但经常使用StreamReader 或StreamWriter 执行这些功能。这是因为FileStream 类操作的是字节和字节数组,而Stream 类操作的是字符数据。                   4. StreamWriter类:向流写入字符数据,可以使用FileStream 将其创建为基类。可以通过许多方法创建StreamWriter 对象。如果已经有了FileStream 对象,就可以使用此               对象来创建StreamWriter 对象:

                                FileStream aFile = new FileStream("Log.txt", FileMode.CreateNew);

                               StreamWriter sw = new StreamWriter(aFile);

           也可以直接从文件中创建StreamWriter 对象:

                               StreamWriter sw = new StreamWriter("Log.txt", true);

           这个构造函数的参数是文件名和一个Boolean 值,这个Boolean 值规定是追加文件,还是创建新文件:

  • 如果此值设置为false,则创建一个新文件,或者截取现有文件并打开它。

  • 如果此值设置为 true,则打开文件,保留原来的数据。如果找不到文件,则创建一个新文件。

          StreamWriter 类的两个最重要的方法:Write()和WriteLine()。WriteLine()方法会写入传递给它的字符串,其后跟有换行符。

       5. StreamReader类:从流中读取字符数据,可以使用FileStream 将其创建为基类。同StreamWriter 一样,这是一个通用类,可以用于任何流。StreamReader 类包含许多              读取数据的方法。其中该取数据最简单的方法是Read()。此方法将流的下一个字符作为正整数值返回,如果到达了流的结尾处,则返回-1。使用Convert 实用类可以把这            个值转换为字符。

                   此外,可以使用ReadLine()方法从文件中读取文本。这个方法读取换行符之前的文本,并以字符串的形式返回结果文本。当到达文件尾时,该方法就返回空值,通过这种方法可以测试文件是否已到达了尾部。注意使用了while 循环,以便确保在执行循环体的代码之前读取的行不为空,这样就只显示文件的有效内容:

                                    line = sr.ReadLine();

                                    while(line != null)

                                    {

                                           Console.WriteLine(line);

                                           strLine = sr.ReadLine();

                                     }

       对于小型文件,可以使用一个非常方便的方法ReadToEnd()。此方法读取整个文件,并将其作为字符串返回。

       这就是在我项目中用到的文件类了,还有一些类没有用到,这里就不一一介绍了。

0 0
原创粉丝点击