BufferedStream.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>) |
Geçerli arabelleğe alınan akıştan baytları bayt aralığına kopyalar ve arabelleğe alınan akış içindeki konumu okunan bayt sayısı kadar ilerletir. |
Read(Byte[], Int32, Int32) |
Geçerli arabelleğe alınan akıştan bir diziye bayt kopyalar. |
Read(Span<Byte>)
- Kaynak:
- BufferedStream.cs
- Kaynak:
- BufferedStream.cs
- Kaynak:
- BufferedStream.cs
Geçerli arabelleğe alınan akıştan baytları bayt aralığına kopyalar ve arabelleğe alınan akış içindeki konumu okunan bayt sayısı kadar ilerletir.
public:
override int Read(Span<System::Byte> destination);
public override int Read (Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination 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 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ö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. Uygulama, kullanılabilir veri olmaması durumunda en az bir bayt veri okunana kadar engeller. Read
yalnızca akışta daha fazla veri olmadığında ve daha fazla veri beklenmezse (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:
- BufferedStream.cs
- Kaynak:
- BufferedStream.cs
- Kaynak:
- BufferedStream.cs
Geçerli arabelleğe alınan akıştan bir diziye bayt kopyalar.
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[]
Baytların kopyalandığı arabellek.
- offset
- Int32
Baytların okunmaya başlandığı arabellekteki bayt uzaklığı.
- count
- Int32
Okunacak bayt sayısı.
Döndürülenler
içine okunan array
toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa istenen bayt sayısından az veya herhangi bir veri okunmadan önce akışın sonuna ulaşıldıysa 0 olabilir.
Özel durumlar
Eksi offset
uzunluğu değerinden array
count
küçük.
array
, null
değeridir.
offset
veya count
negatiftir.
Akış açık değil veya şeklindedir null
.
Akış okumayı desteklemiyor.
Akış kapatıldıktan sonra yöntemler çağrıldı.
Örnekler
Bu kod örneği, sınıfı için BufferedStream sağlanan daha büyük bir örneğin parçasıdır.
// Receive data using the BufferedStream.
Console::WriteLine( "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString( "F1" ) );
// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;
int numBytesToRead = receivedData.Length;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = bufStream.Read(receivedData,0, receivedData.Length);
// The end of the file is reached.
if (n == 0)
break;
bytesReceived += n;
numBytesToRead -= n;
}
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
bytesReceived.ToString(),
bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now
let mutable numBytesToRead = receivedData.Length
let mutable broken = false
while not broken && numBytesToRead > 0 do
// Read may return anything from 0 to numBytesToRead.
let n = bufStream.Read(receivedData,0, receivedData.Length)
// The end of the file is reached.
if n = 0 then
broken <- true
else
bytesReceived <- bytesReceived + n
numBytesToRead <- numBytesToRead - n
let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now
Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0
'Read my return anything from 0 to numBytesToRead
n = bufStream.Read(receivedData, 0, receivedData.Length)
'The end of the file is reached.
If n = 0 Then
Exit Do
End If
bytesReceived += n
numBytesToRead -= n
Loop
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
"seconds." & vbCrLf, _
bytesReceived.ToString(), _
bufferedTime.ToString("F1"))
Açıklamalar
Read
yöntemi yalnızca akışın sonuna ulaşılırsa 0 döndürür. Diğer tüm durumlarda, Read
geri dönmeden önce her zaman akıştan en az bir bayt okur. Tanımı gereği, çağrısı Read
Read
üzerine akıştan kullanılabilir veri yoksa yöntemi 0 döndürür (akışın sonuna otomatik olarak ulaşılı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.
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- Dosya ve Stream G/Ç
- Nasıl yapılır: Dosyadan Metin Okuma
- Nasıl yapılır: Bir Dosyaya Metin Yazma