FileStream.ReadByte Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Lê um byte do arquivo e avança a posição de leitura um byte.
public:
override int ReadByte();
public override int ReadByte();
override this.ReadByte : unit -> int
Public Overrides Function ReadByte () As Integer
Retornos
O byte, convertido em um Int32ou -1 se o final do fluxo tiver sido atingido.
Exceções
O fluxo atual não dá suporte à leitura.
O fluxo atual está fechado.
Exemplos
O exemplo de código a seguir mostra como gravar dados em um arquivo, byte byte e verificar se os dados foram gravados corretamente.
using System;
using System.IO;
class FStream
{
static void Main()
{
const string fileName = "Test#@@#.dat";
// Create random data to write to the file.
byte[] dataArray = new byte[100000];
new Random().NextBytes(dataArray);
using(FileStream
fileStream = new FileStream(fileName, FileMode.Create))
{
// Write the data to the file, byte by byte.
for(int i = 0; i < dataArray.Length; i++)
{
fileStream.WriteByte(dataArray[i]);
}
// Set the stream position to the beginning of the file.
fileStream.Seek(0, SeekOrigin.Begin);
// Read and verify the data.
for(int i = 0; i < fileStream.Length; i++)
{
if(dataArray[i] != fileStream.ReadByte())
{
Console.WriteLine("Error writing data.");
return;
}
}
Console.WriteLine("The data was written to {0} " +
"and verified.", fileStream.Name);
}
}
}
open System
open System.IO
let fileName = "Test#@@#.dat"
// Create random data to write to the file.
let dataArray = Array.zeroCreate 100000
Random.Shared.NextBytes dataArray
do
use fileStream = new FileStream(fileName, FileMode.Create)
// Write the data to the file, byte by byte.
for i = 0 to dataArray.Length - 1 do
fileStream.WriteByte dataArray[i]
// Set the stream position to the beginning of the file.
fileStream.Seek(0, SeekOrigin.Begin) |> ignore
// Read and verify the data.
for i in 0L .. fileStream.Length - 1L do
if dataArray[int i] <> (fileStream.ReadByte() |> byte) then
printfn "Error writing data."
exit 1
printfn $"The data was written to {fileStream.Name} and verified."
Imports System.IO
Imports System.Text
Class FStream
Shared Sub Main()
Const fileName As String = "Test#@@#.dat"
' Create random data to write to the file.
Dim dataArray(100000) As Byte
Dim randomGenerator As New Random()
randomGenerator.NextBytes(dataArray)
Dim fileStream As FileStream = _
new FileStream(fileName, FileMode.Create)
Try
' Write the data to the file, byte by byte.
For i As Integer = 0 To dataArray.Length - 1
fileStream.WriteByte(dataArray(i))
Next i
' Set the stream position to the beginning of the stream.
fileStream.Seek(0, SeekOrigin.Begin)
' Read and verify the data.
For i As Integer = 0 To _
CType(fileStream.Length, Integer) - 1
If dataArray(i) <> fileStream.ReadByte() Then
Console.WriteLine("Error writing data.")
Return
End If
Next i
Console.WriteLine("The data was written to {0} " & _
"and verified.", fileStream.Name)
Finally
fileStream.Close()
End Try
End Sub
End Class
Comentários
Este método substitui ReadByte.
Observação
Use a CanRead propriedade para determinar se a instância atual dá suporte à leitura. Para obter informações adicionais, confira CanRead.
Notas aos Herdeiros
A implementação padrão cria uma nova matriz de bytes únicos e, em Stream seguida, chama Read(Byte[], Int32, Int32). Embora isso esteja formalmente correto, é ineficiente. Qualquer fluxo com um buffer interno deve substituir esse método e fornecer uma versão muito mais eficiente que lê o buffer diretamente, evitando a alocação de matriz extra em cada chamada.
Para obter uma lista de operações comuns de arquivo e diretório, consulte Tarefas comuns de E/S.