System.IO.FileStream.Read 方法

方法描述

从流中读取字节块并将该数据写入给定缓冲区中。

语法定义(C# System.IO.FileStream.Read 方法 的用法)

public override int Read(
	byte[] array,
	int offset,
	int count
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
array System-Byte[] 此方法返回时包含指定的字节数组,数组中 offset 和 (offset + count - 1) 之间的值由从当前源中读取的字节替换。
offset System-Int32 array 中的字节偏移量,将在此处开始放置读入的字节。
count System-Int32 最多读取的字节数。
返回值 System.Int32 读入缓冲区中的总字节数。 如果当前的字节数没有所请求那么多,则总字节数可能小于所请求的字节数;如果已到达流的末尾,则为零。

提示和注释

此方法重写 Read。

offset 参数给出 array 中字节的偏移量(缓冲区索引),从此处开始读取,count 参数给出从此流最多读取的字节数。 返回的值是读取字节的实际数量,或如果到达流的结尾,则该值为零。 如果读操作成功,则流的当前位置前进读取的字节数。 如果发生异常,则流的当前位置不变。

只有在到达流的末尾后,Read 方法才返回零。 否则,Read 在返回前始终至少从流读取一个字节。 如果在调用 Read 之后流中无可用数据,则该方法将一直阻止,直到至少可返回一个字节的数据。 即使尚未到达流的末尾,实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

不支持中断一个正在执行读取操作的线程。 尽管这些操作可能会在取消阻止线程后成功,这些操作仍可以降低应用程序的性能和可靠性。

有关通用 I/O 任务的列表,请参见通用 I/O 任务。

System.IO.FileStream.Read 方法例子

下面的示例从 FileStream 读取内容,并将其写入到另一个 FileStream。

using System;
using System.IO;

class Test
{

public static void Main()
{
    // Specify a file to read from and to create.
    string pathSource = @"c:\tests\source.txt";
    string pathNew = @"c:\tests\newfile.txt";

    try
    {

        using (FileStream fsSource = new FileStream(pathSource,
            FileMode.Open, FileAccess.Read))
        {

            // Read the source file into a byte array.
            byte[] bytes = new byte[fsSource.Length];
            int numBytesToRead = (int)fsSource.Length;
            int numBytesRead = 0;
            while (numBytesToRead > 0)
            {
                // Read may return anything from 0 to numBytesToRead.
                int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

                // Break when the end of the file is reached.
                if (n == 0)
                    break;

                numBytesRead += n;
                numBytesToRead -= n;
            }
             numBytesToRead = bytes.Length;

            // Write the byte array to the other FileStream.
            using (FileStream fsNew = new FileStream(pathNew,
                FileMode.Create, FileAccess.Write))
            {
                fsNew.Write(bytes, 0, numBytesToRead);
            }
        }
    }
    catch (FileNotFoundException ioEx)
    {
        Console.WriteLine(ioEx.Message);
    }
}
}

异常

异常 异常描述
ArgumentNullException array 为 null。
ArgumentOutOfRangeException offset 或 count 为负。
NotSupportedException 流不支持读取。
IOException 发生了 I/O 错误。
ArgumentException offset 和 count 描述 array 中的无效范围。
ObjectDisposedException 在流关闭后调用方法。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。