Ler e gravar em arquivos binários
o BinaryReader e BinaryWriter classes são usadas para ler e gravar em um arquivo binário.
A classe BinaryReader
o BinaryReaderclasse é usada para ler dados binários de um arquivo. UMABinaryReader objeto é criado passando um FileStream objeto ao seu construtor.
A tabela a seguir descreve os comumente usados methods do BinaryReader classe.
Sr. Não. | Método e Descrição |
---|---|
1 | public override void Close() Ele fecha o objeto BinaryReader e o fluxo subjacente. |
2 | public virtual int Read() Lê os caracteres do fluxo subjacente e avança a posição atual do fluxo. |
3 | public virtual bool ReadBoolean() Lê um valor booleano do fluxo atual e avança a posição atual do fluxo em um byte. |
4 | public virtual byte ReadByte() Lê o próximo byte do fluxo atual e avança a posição atual do fluxo em um byte. |
5 | public virtual byte[] ReadBytes(int count) Lê o número especificado de bytes do fluxo atual em uma matriz de bytes e avança a posição atual por esse número de bytes. |
6 | public virtual char ReadChar() Lê o próximo caractere do fluxo atual e avança a posição atual do fluxo de acordo com a codificação usada e o caractere específico que está sendo lido do fluxo. |
7 | public virtual char[] ReadChars(int count) Lê o número especificado de caracteres do fluxo atual, retorna os dados em uma matriz de caracteres e avança a posição atual de acordo com a codificação usada e o caractere específico que está sendo lido do fluxo. |
8 | public virtual double ReadDouble() Lê um valor de ponto flutuante de 8 bytes do fluxo atual e avança a posição atual do fluxo em oito bytes. |
9 | public virtual int ReadInt32() Lê um inteiro assinado de 4 bytes do fluxo atual e avança a posição atual do fluxo em quatro bytes. |
10 | public virtual string ReadString() Lê uma string do fluxo atual. A string é prefixada com o comprimento, codificada como um número inteiro de sete bits por vez. |
A classe BinaryWriter
o BinaryWriterclasse é usada para gravar dados binários em um fluxo. Um objeto BinaryWriter é criado passando um objeto FileStream para seu construtor.
A tabela a seguir descreve os métodos comumente usados da classe BinaryWriter.
Sr. Não. | Descrição da função |
---|---|
1 | public override void Close() Ele fecha o objeto BinaryWriter e o fluxo subjacente. |
2 | public virtual void Flush() Limpa todos os buffers do gravador atual e faz com que todos os dados do buffer sejam gravados no dispositivo subjacente. |
3 | public virtual long Seek(int offset, SeekOrigin origin) Define a posição dentro do fluxo atual. |
4 | public virtual void Write(bool value) Grava um valor booleano de um byte no fluxo atual, com 0 representando falso e 1 representando verdadeiro. |
5 | public virtual void Write(byte value) Grava um byte não assinado no fluxo atual e avança a posição do fluxo em um byte. |
6 | public virtual void Write(byte[] buffer) Grava uma matriz de bytes no fluxo subjacente. |
7 | public virtual void Write(char ch) Grava um caractere Unicode no fluxo atual e avança a posição atual do fluxo de acordo com a codificação usada e os caracteres específicos sendo gravados no fluxo. |
8 | public virtual void Write(char[] chars) Grava uma matriz de caracteres no fluxo atual e avança a posição atual do fluxo de acordo com a codificação usada e os caracteres específicos sendo gravados no fluxo. |
9 | public virtual void Write(double value) Grava um valor de ponto flutuante de oito bytes no fluxo atual e avança a posição do fluxo em oito bytes. |
10 | public virtual void Write(int value) Grava um inteiro assinado de quatro bytes no fluxo atual e avança a posição do fluxo em quatro bytes. |
11 | public virtual void Write(string value) Grava uma string com prefixo de comprimento neste fluxo na codificação atual do BinaryWriter e avança a posição atual do fluxo de acordo com a codificação usada e os caracteres específicos sendo gravados no fluxo. |
Para obter uma lista completa de métodos, visite a documentação do Microsoft C #.
Exemplo
O exemplo a seguir demonstra a leitura e gravação de dados binários -
using System;
using System.IO;
namespace BinaryFileApplication {
class Program {
static void Main(string[] args) {
BinaryWriter bw;
BinaryReader br;
int i = 25;
double d = 3.14157;
bool b = true;
string s = "I am happy";
//create the file
try {
bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
} catch (IOException e) {
Console.WriteLine(e.Message + "\n Cannot create file.");
return;
}
//writing into the file
try {
bw.Write(i);
bw.Write(d);
bw.Write(b);
bw.Write(s);
} catch (IOException e) {
Console.WriteLine(e.Message + "\n Cannot write to file.");
return;
}
bw.Close();
//reading from the file
try {
br = new BinaryReader(new FileStream("mydata", FileMode.Open));
} catch (IOException e) {
Console.WriteLine(e.Message + "\n Cannot open file.");
return;
}
try {
i = br.ReadInt32();
Console.WriteLine("Integer data: {0}", i);
d = br.ReadDouble();
Console.WriteLine("Double data: {0}", d);
b = br.ReadBoolean();
Console.WriteLine("Boolean data: {0}", b);
s = br.ReadString();
Console.WriteLine("String data: {0}", s);
} catch (IOException e) {
Console.WriteLine(e.Message + "\n Cannot read from file.");
return;
}
br.Close();
Console.ReadKey();
}
}
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy