C# FileStream文件读写详解

2019-12-30 12:14:36刘景俊

    Console.ReadKey();
    return;
}

 

文件IO涉及到的所有操作都可以抛出类型为IOException的异常。所有产品代码都必须包含错误处理,尤其是处理文件系统时更是如此。本章的所有示例都具有错误处理的基本形式。

从文件中获取了字节数组后,就需要将其转换为字符数组,以便在控制台显示它。为此,使用System.Text命名空间的Decoder类。此类用于将原始字节转换为更有用的项,比如字符:

 

复制代码
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, 0, byData.Length, charData, 0);

 

这些代码基于UTF8编码模式创建了Decoder对象。这就是Unicode编码模式。然后调用GetChars()方法,此方法提取字节数组,将它转换为字符数组。完成之后,就可以将字符数组输出到控制台。

3. 写入数据

向随机访问文件中写入数据的过程与从中读取数据非常类似。首先需要创建一个字节数组;最简单的办法是首先构建要写入文件的字符数组。然后使用Encoder对象将其转换为字节数组,其用法非常类似于Decoder。最后调用Write()方法,将字节数组传送到文件中。

下面构建一个简单的示例演示其过程。

试试看:将数据写入随机访问文件

(1) 在C:BegVCSharpChapter22目录下创建一个新的控制台应用程序WriteFile。

(2) 如上所示,在Program.cs文件顶部添加下面的using指令:

 

复制代码
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

 

(3) 在Main()方法中添加下面的代码:

 

复制代码
static void Main(string[] args)
{
   byte[] byData;
   char[] charData;
 
   try
   {
      FileStream aFile = new FileStream("Temp.txt", FileMode.Create);
      charData = "My pink half of the drainpipe.".ToCharArray();
      byData = new byte[charData.Length];