C# FileStream文件读写详解

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

      Encoder e = Encoding.UTF8.GetEncoder();
      e.GetBytes(charData, 0, charData.Length, byData, 0, true);
 
      // Move file pointer to beginning of file.
      aFile.Seek(0, SeekOrigin.Begin);
      aFile.Write(byData, 0, byData.Length);
   }
   catch (IOException ex)
   {
      Console.WriteLine("An IO exception has been thrown!");
      Console.WriteLine(ex.ToString());
      Console.ReadKey();
      return;
   }
}

 

(4) 运行该应用程序。稍后就将其关闭。

(5) 导航到应用程序目录 —— 在目录中已经保存了文件,因为我们使用了相对路径。目录位于WriteFilebinDebug文件夹。打开Temp.txt文件。可以在文件中看到如图22-3所示的文本。

C#,FileStream

图 22-3

示例的说明
此应用程序在自己的目录中打开文件,并在文件中写入了一个简单的字符串。在结构上这个示例非常类似于前面的示例,只是用Write()代替了Read(),用Encoder代替了Decoder。

下面的代码行使用String类的ToCharArray()静态方法,创建了字符数组。因为C#中的所有事物都是对象,文本“My pink half of the drainpipe.”实际上是一个String对象,所以甚至可以在字符串上调用这些静态方法。

 

复制代码
CharData = " My pink half of the drainpipe. ".ToCharArray();

 

下面的代码行显示了如何将字符数组转换为FileStream对象需要的正确字节数组。

 

复制代码
Encoder e = Endoding.UTF8.GetEncoder();
e.GetBytes(charData,0,charData.Length, byData,0,true);

 

这次,要基于UTF8编码方法来创建Encoder对象。也可以将Unicode用于解码。这里在写入流之前,需要将字符数据编码为正确的字节格式。在GetBytes()方法中可以完成这些工作,它可以将字符数组转换为字节数组,并将字符数组作为第一个参数(本例中的charData),将该数组中起始位置的下标作为第二个参数(0表示数组的开头)。第三个参数是要转换的字符数量(charData.Length,charData数组中的元素个数)。第四个参数是在其中置入数据的字节数组(byData),第五个参数是在字节数组中开始写入位置的下标(0表示byData数组的开头)。