Aracılığıyla paylaş


FileStream.Read Yöntem

Tanım

Aşırı Yüklemeler

Name Description
Read(Byte[], Int32, Int32)

Akıştan bir bayt bloğu okur ve verileri belirli bir arabelleğe yazar.

Read(Span<Byte>)

Geçerli dosya akışından bir bayt dizisi okur ve dosya akışındaki konumu okunan bayt sayısına göre ilerler.

Read(Byte[], Int32, Int32)

Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs

Akıştan bir bayt bloğu okur ve verileri belirli bir arabelleğe yazar.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read(byte[] array, int offset, int count);
public override int Read(byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Parametreler

arraybuffer
Byte[]

Bu yöntem döndürdüğünde, belirtilen bayt dizisini ve (countoffset + - 1) arasındaki offset değerler geçerli kaynaktan okunan baytlarla değiştirilir) içerir.

offset
Int32

Okuma baytlarının yerleştirileceği bayt uzaklığı array .

count
Int32

Okunacak bayt sayısı üst sınırı.

Döndürülenler

Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir bayt sayısı yoksa istenen bayt sayısından az veya akışın sonuna ulaşılırsa sıfır olabilir.

Özel durumlar

array, null'e eşittir.

offset veya count negatiftir.

Akış okumayı desteklemiyor.

G/Ç hatası oluştu.

offset ve count içinde arraygeçersiz bir aralığı açıklayın.

Akış kapatıldıktan sonra yöntemler çağrıldı.

Örnekler

Aşağıdaki örnek içindekileri okur ve başka bir FileStreamFileStreamöğesine yazar.

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);
    }
}
}
open System.IO

// Specify a file to read from and to create.
let pathSource = @"c:\tests\source.txt"
let pathNew = @"c:\tests\newfile.txt"

try
    use fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read)

    // Read the source file into a byte array.
    let mutable numBytesToRead = int fsSource.Length
    let bytes = numBytesToRead |> Array.zeroCreate
    let mutable numBytesRead = 0

    while numBytesToRead > 0 do
        // Read may return anything from 0 to numBytesToRead.
        let n = fsSource.Read(bytes, numBytesRead, numBytesToRead)

        // Break when the end of the file is reached.
        if n <> 0 then
            numBytesRead <- numBytesRead + n
            numBytesToRead <- numBytesToRead - n

    let numBytesToRead = bytes.Length

    // Write the byte array to the other FileStream.
    use fsNew = new FileStream(pathNew, FileMode.Create, FileAccess.Write)
    fsNew.Write(bytes, 0, numBytesToRead)
with :? FileNotFoundException as ioEx ->
    printfn $"{ioEx.Message}"
Imports System.IO
Class Test
    
Public Shared Sub Main()
    ' Specify a file to read from and to create.
    Dim pathSource As String = "c:\tests\source.txt"
    Dim pathNew As String = "c:\tests\newfile.txt"
    Try 
        Using fsSource As FileStream = New FileStream(pathSource, _
            FileMode.Open, FileAccess.Read)
            ' Read the source file into a byte array.
                Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
                Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
                Dim numBytesRead As Integer = 0

                While (numBytesToRead > 0)
                    ' Read may return anything from 0 to numBytesToRead.
                    Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
                        numBytesToRead)
                    ' Break when the end of the file is reached.
                    If (n = 0) Then
                        Exit While
                    End If
                    numBytesRead = (numBytesRead + n)
                    numBytesToRead = (numBytesToRead - n)

                End While
            numBytesToRead = bytes.Length

            ' Write the byte array to the other FileStream.
            Using fsNew As FileStream = New FileStream(pathNew, _
                FileMode.Create, FileAccess.Write)
                fsNew.Write(bytes, 0, numBytesToRead)
            End Using
        End Using
    Catch ioEx As FileNotFoundException
        Console.WriteLine(ioEx.Message)
    End Try
End Sub
End Class

Açıklamalar

Bu yöntem geçersiz kılar Read.

offset parametresi, okumaya başlanacak bayt array uzaklığını (arabellek dizini) verir ve count parametre bu akıştan okunacak bayt sayısı üst sınırını verir. Döndürülen değer, okunan gerçek bayt sayısıdır veya akışın sonuna ulaşılırsa sıfırdır. Okuma işlemi başarılı olursa, akışın geçerli konumu okunan bayt sayısıyla gelişmiştir. Bir özel durum oluşursa, akışın geçerli konumu değişmez.

Read yöntemi yalnızca akışın sonuna ulaştıktan sonra sıfır döndürür. Aksi takdirde, Read geri dönmeden önce her zaman akıştan en az bir bayt okur. çağrısının Readardından akıştan kullanılabilir veri yoksa, yöntemi en az bir bayt veri döndürülene kadar engellenir. Akışın sonuna ulaşılmasa bile uygulamanın istenenden daha az bayt döndürmesi ücretsizdir.

İlkel veri türlerini okumak için kullanın BinaryReader .

Okuma işlemi gerçekleştiren bir iş parçacığını kesmeyin. İş parçacığı engeli kaldırıldıktan sonra uygulama başarıyla çalışıyor gibi görünse de, kesinti uygulamanızın performansını ve güvenilirliğini düşürebilir.

Yaygın dosya ve dizin işlemlerinin listesi için bkz. Ortak G/Ç Görevleri.

Ayrıca bkz.

Şunlara uygulanır

Read(Span<Byte>)

Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs
Kaynak:
FileStream.cs

Geçerli dosya akışından bir bayt dizisi okur ve dosya akışındaki konumu okunan bayt sayısına göre ilerler.

public:
 override int Read(Span<System::Byte> buffer);
public override int Read(Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

Parametreler

buffer
Span<Byte>

Bellek bölgesi. Bu yöntem döndürdüğünde, bu bölgenin içeriği geçerli dosya akışından okunan baytlar ile değiştirilir.

Döndürülenler

Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa arabellekte ayrılan bayt sayısından az veya akışın sonuna ulaşıldıysa sıfır (0) olabilir.

Açıklamalar

CanRead Geçerli örneğin okumayı destekleyip desteklemediğini belirlemek için özelliğini kullanın. ReadAsync Geçerli akıştan zaman uyumsuz olarak okumak için yöntemini kullanın.

Bu yöntem, geçerli dosya akışından en fazla buffer.Length bayt sayısını okur ve içinde bufferdepolar. Dosya akışındaki geçerli konum, okunan bayt sayısıyla gelişmiştir; ancak bir özel durum oluşursa, dosya akışındaki geçerli konum değişmeden kalır. Yöntem, kullanılabilir veri olmaması durumunda en az bir bayt veri okunana kadar engeller. Read yalnızca dosya akışında daha fazla veri olmadığında ve daha fazla veri beklenmezse (kapalı yuva veya dosya sonu gibi) 0 döndürür. Yöntem, dosya akışının sonuna ulaşılmasa bile istenenden daha az bayt döndürmek için ücretsizdir.

İlkel veri türlerini okumak için kullanın BinaryReader .

Şunlara uygulanır