Stream.Read Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
Read(Span<Byte>) |
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısı kadar akış içindeki konumu ilerletir. |
Read(Byte[], Int32, Int32) |
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısı kadar akış içindeki konumu ilerletir. |
Read(Span<Byte>)
- Kaynak:
- Stream.cs
- Kaynak:
- Stream.cs
- Kaynak:
- Stream.cs
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısı kadar akış içindeki konumu ilerletir.
public:
virtual int Read(Span<System::Byte> buffer);
public virtual int Read (Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer
Parametreler
Bellek bölgesi. Bu yöntem döndürdüğünde, bu bölgenin içeriği geçerli kaynaktan okunan bayt ile değiştirilir.
Döndürülenler
Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa arabelleğin boyutundan küçük veya arabelleğin uzunluğu sıfır 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öntemin uygulamaları geçerli akıştan en fazla buffer.Length
bayt sayısını okur ve içinde depolar buffer
. Akış içindeki geçerli konum, okunan bayt sayısıyla gelişmiştir; ancak bir özel durum oluşursa akış içindeki geçerli konum değişmeden kalır. Uygulamalar okunan bayt sayısını döndürür. Sıfırdan fazla bayt istenirse, uygulama en az bir bayt veri okunabilene kadar işlemi tamamlamaz (sıfır bayt istendiyse, bazı uygulamalar benzer şekilde en az bir bayt kullanılabilir olana kadar tamamlanmayabilir, ancak böyle bir durumda akıştan veri tüketilmeyecektir). Read yalnızca sıfır bayt istendiğinde veya akışta daha fazla veri olmadığında ve artık beklenmiyorsa (kapalı yuva veya dosya sonu gibi) 0 döndürür. Bir uygulama, akışın sonuna ulaşılmasa bile istenenden daha az bayt döndürmek için ücretsizdir.
Temel veri türlerini okumak için kullanın BinaryReader .
Şunlara uygulanır
Read(Byte[], Int32, Int32)
- Kaynak:
- Stream.cs
- Kaynak:
- Stream.cs
- Kaynak:
- Stream.cs
Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısı kadar akış içindeki konumu ilerletir.
public:
abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read (byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parametreler
- buffer
- Byte[]
Bayt dizisi. Bu yöntem döndürdüğünde arabellek, ve (offset
+ count
- 1) arasındaki offset
değerlerin geçerli kaynaktan okunan baytlarla değiştirdiği belirtilen bayt dizisini içerir.
- offset
- Int32
Geçerli akıştan okunan verileri depolamaya başlayabileceğiniz sıfır tabanlı bayt uzaklığı buffer
.
- count
- Int32
Geçerli akıştan okunacak en fazla bayt sayısı.
Döndürülenler
Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa istenen bayt sayısından az veya akışın sonuna ulaşıldıysa count
sıfır (0) olabilir.
Özel durumlar
ve count
toplamı offset
arabellek uzunluğundan daha büyüktür.
buffer
, null
değeridir.
offset
veya count
negatiftir.
Bir G/Ç hatası oluşur.
Akış okumayı desteklemiyor.
Akış kapatıldıktan sonra yöntemler çağrıldı.
Örnekler
Aşağıdaki örnekte, veri bloğunu okumak için nasıl kullanılacağı Read gösterilmektedir.
using namespace System;
using namespace System::IO;
public ref class Block
{
public:
static void Main()
{
Stream^ s = gcnew MemoryStream();
for (int i = 0; i < 100; i++)
{
s->WriteByte((Byte)i);
}
s->Position = 0;
// Now read s into a byte buffer.
array<Byte>^ bytes = gcnew array<Byte>(s->Length);
int numBytesToRead = (int) s->Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s->Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
s->Close();
// numBytesToRead should be 0 now, and numBytesRead should
// equal 100.
Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
}
};
int main()
{
Block::Main();
}
using System;
using System.IO;
public class Block
{
public static void Main()
{
Stream s = new MemoryStream();
for (int i = 0; i < 122; i++)
{
s.WriteByte((byte)i);
}
s.Position = 0;
// Now read s into a byte buffer with a little padding.
byte[] bytes = new byte[s.Length + 10];
int numBytesToRead = (int)s.Length;
int numBytesRead = 0;
do
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
numBytesRead += n;
numBytesToRead -= n;
} while (numBytesToRead > 0);
s.Close();
Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
}
}
Imports System.IO
Public Class Block
Public Shared Sub Main()
Dim s As Stream = New MemoryStream()
For i As Integer = 0 To 121
s.WriteByte(CType(i, Byte))
Next i
s.Position = 0
' Now read s into a byte buffer that is padded slightly.
Dim bytes(s.Length + 10) As Byte
Dim numBytesToRead As Integer = s.Length
Dim numBytesRead As Integer = 0
Dim n As Integer
Do
' Read may return anything from 0 to 10.
n = s.Read(bytes, numBytesRead, 10)
' The end of the file is reached.
numBytesRead += n
numBytesToRead -= n
Loop While numBytesToRead > 0
s.Close()
Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
End Sub
End Class
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öntemin uygulamaları geçerli akıştan en fazla count
bayt sayısını okur ve başında depolar buffer
offset
. Akış içindeki geçerli konum, okunan bayt sayısıyla gelişmiştir; ancak bir özel durum oluşursa akış içindeki geçerli konum değişmeden kalır. Uygulamalar okunan bayt sayısını döndürür. Sıfır bayttan fazla istenirse, en az bir bayt veri okunana kadar uygulama işlemi tamamlamaz (bazı uygulamalar, sıfır bayt istense bile en az bir bayt kullanılabilir olana kadar benzer şekilde tamamlanmayabilir, ancak böyle bir durumda akıştan veri tüketilmeyecektir). Read yalnızca sıfır bayt istendiğinde veya akışta daha fazla veri olmadığında ve artık beklenmiyorsa (kapalı yuva veya dosya sonu gibi) 0 döndürür. Bir uygulama, akışın sonuna ulaşılmasa bile istenenden daha az bayt döndürmek için ücretsizdir.
Temel veri türlerini okumak için kullanın BinaryReader .
Ayrıca bkz.
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin