📜  C# 程序使用 FileStream 类读取和写入字节数组到文件

📅  最后修改于: 2022-05-13 01:54:51.242000             🧑  作者: Mango

C# 程序使用 FileStream 类读取和写入字节数组到文件

给定一个文件,现在我们的任务是在 FileStream Class 的帮助下将字节数组读取和写入文件 C# 中的 Filestream 类是 System.IO 命名空间和 System.Runtime.dll 程序集的一部分。此类为支持同步和异步读写操作的文件提供流。此类可用于读取、写入、打开和关闭文件系统上的文件。输入和输出缓冲区,这就是它提供更好性能的原因。该类提供了不同类型的方法,read 和 write 方法就是其中之一。

1. Read() 方法:该方法用于从流中读取字节并将数据写入指定缓冲区。

句法:

这里,arr 是一个字节数组,loc 是 arr 中将放置读取字节的字节偏移量,count 是读/写文件的总字节数。

异常:此方法也会抛出一些异常:

  • ArgumentNullException:当 arr 为空时抛出此异常。
  • ArgumentOutOfRangeException:当 loc 或 count 为负时抛出此异常。
  • NotSupportedException:当流不支持读取时抛出此异常。
  • IOException:发生 I/O 错误时抛出此异常。
  • ArgumentException:当 loc 和 count 的值是数组中的无效范围时,将引发此异常。

此方法还有一个重载方法,即Read(Span)。此方法用于从给定文件流中读取字节序列,并将位置提前在给定文件流中读取的字节数。

句法:

2、Write()方法:该方法用于读取一个字节序列到文件流中。

这里,arr 是一个字节数组,loc 是 arr 中从 0 开始的字节偏移量,从该偏移量开始将字节复制到流中,count 是读/写文件的总字节数。

异常:此方法也会抛出一些异常:

  • ArgumentNullException:当 arr 为空时抛出此异常。
  • ArgumentOutOfRangeException:当 loc 或 count 为负时抛出此异常。
  • NotSupportedException:当流不支持读取时抛出此异常。
  • ObjectDisposedException:关闭指定流时抛出此异常。
  • IOException:发生 I/O 错误时抛出此异常。
  • ArgumentException:当 loc 和 count 的值是数组中的无效范围时,将引发此异常。

此方法还有一个重载方法,即Read(Span)。此方法用于将只读范围中的字节序列写入给定文件流,并将位置提前写入给定文件流中的字节数。

句法:

使用 FileStream 类读取和写入字节数组到文件

在这个程序中,我们对文件使用了读写操作,并从文件中找到最大的元素。

C#
// C# program to read and write a byte array to
// file using FileStream Class
using System;
using System.IO;
 
class GFG
{
 
    static public void Main()
    {
 
        // Initializing byte arrays
        byte[] arr1 = { 4, 25, 40, 3, 11, 18, 7 };
        byte[] arr2 = new byte[7];
 
        // initializing values
        byte largest = 0;
 
        // FileStream instance
        FileStream file;
 
        file = new FileStream("GeeksforGeeks.txt",
                              FileMode.Create,
                              FileAccess.Write);
 
        // Using write() method
        // Write the bytes
        file.Write(arr1, 0, 7);
 
        // Closing the file
        file.Close();
 
        // Instantiating
        file = new FileStream("GeeksforGeeks.txt",
                              FileMode.Open,
                              FileAccess.Read);
 
        // Using Read() method
        // Read the bytes
        file.Read(arr2, 0, 7);
 
        largest = arr2[0];
        for (int n = 1; n < arr2.Length; n++)
        {
            if (largest < arr2[n])
                largest = arr2[n];
        }
 
        Console.WriteLine("The largest element is : " +
                          largest);
 
        // Close the file
        file.Close();
    }
}


输出:

The largest element is : 40