Neste artigo vou mostrar como ler e escrever em arquivos binários usando a linguagem VB .NET. |
Quando você cria uma nova instância da classe BinaryReader, você fornece o stream para ler e, opcionalmente, especifica o tipo de codificação e se deseja deixar o stream aberto depois de descartar o objeto BinaryReader . Se você não especificar um tipo de codificação, o UTF-8 é usado.
O objeto BinaryReader funciona no nível mais baixo de Streams. sendo usado para ler tipos primitivos como valores binários em um fluxo de codificação específico. Ele funciona com objetos Streams que fornecem acesso aos bytes subjacentes.
Para criar um objeto BinaryReader, você deve primeiro criar um objeto FileStream e depois passar o BinaryReader para o método do construtor.
Exemplo:
Dim lerStream As FileStream
lerStream = New FileStream("c:\teste.dat",
FileMode.Open)
Dim lerBinary As New
BinaryReader(lerStream)
Uma das principais vantagens em usar a informação binária é que ela armazena informação no formato binário sendo uma boa prática para segurança e utilização de espaço.
Para escrever tipos de dados primitivos no formato binário usamos a classe BinaryWriter também presente no namespace System.IO.
Assim, os dados do tipo primitivo podem ser gravados e lidos a partir de arquivos diretamente usando as classes BinaryWriter e BinaryReader. Você pode usar essas classes para criar seu próprio formato de arquivo binário para sua aplicação. Se você lida apenas com tipos primitivos, este é o melhor fluxo a ser usado.
Vejamos as seguir os principais recursos das classes BinaryReader e BinaryWriter :
A classe BinaryWriter expõe os seguintes membros.
Close() - Método é usado para fechar o BinaryWriter atual e o
stream subjacente;
Write(Boolean) - Método usado para escrever um valor booleano de um
byte para o stream atual;
Write(Byte) - Método usado para escrever um byte não assinado no
stream atual avançando uma posição do fluxo por um byte;
Write(Char) - Método usado para escrever um caractere Unicode no
stream atual avançando uma posição de acordo com a codificação usada e os
caracteres que estão sendo gravados no stream;
Write(decimal) - Método usado para escrever um valor decimal no
stream atual e avança a posição do fluxo em dezesseis bytes.
Write(Double) - Método usado para escrever um valor de ponto
flutuante de oito bytes para o fluxo atual e avança a posição de fluxo em
oito bytes.
Write(Int16) - Grava um inteiro assinado de dois bytes no stream atual e
avança a posição do stream por dois bytes.
Write(Int32) - Grava um inteiro
assinado de quatro bytes no stream atual e avança a posição do fluxo por
quatro bytes.
Write(String) - Grava uma string de comprimento prefixado para o
stream atual e avança a posição atual ;
A classe BinaryReader expõe os seguintes membros.
Close() - Fecha o objeto BinaryReader e o stream subjacente.
Read() - Lê os caracteres do stream subjacente e avança a posição
atual do stream.
ReadBoolean() - Lê um valor booleano do stream atual e avança a
posição atual do stream por um byte.
ReadByte() - Lê o próximo byte do stream atual e avança a posição
atual do stream em um byte.
ReadBytes(int count) - Lê o número especificado de bytes do stream
atual em uma matriz de bytes e avança a posição atual por esse número de
bytes.
ReadChar() - Lê o próximo caractere do stream atual e avança a
posição atual do stream de acordo com a codificação usada e o caracter
específico que está sendo lido a partir do stream.
ReadChars(int count) - Lê o número especificado de caracteres do
stream 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 a
ser lido a partir do stream.
ReadDouble() - Lê um valor de ponto flutuante de 8 bytes do stream
atual e avança a posição atual do stream em oito bytes.
ReadInt32() - Lê um inteiro assinado de 4 bytes do stream atual e
avança a posição atual do stream por quatro bytes.
ReadString() - Lê uma string do stream atual. A string é prefixada
com o comprimento, codificado como um número inteiro de sete bits de cada
vez
Vamos agora mostrar um exemplo básico de como usar essas classes.
Recursos Usados
Criando o projeto Console Application
Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Classic Desktop ->Console App(.NET Framework)
Informe um nome a seu gosto. Eu vou usar o nome VBNET_BinaryReadWrite.
O exemplo a seguir mostra como criar um arquivo de configuração com algumas informações no formato binário e depois ler e exibir essas informações.
Inclua o código abaixo no arquivo Module1.vb :
Imports System.IO
Module Module1
Const nomeArquivo As String = "C:\dados\config\ConfigDemo.bin"
Sub Main()
GravarValoresPadrao()
ExibirValores()
End Sub
Sub GravarValoresPadrao()
Using writer As BinaryWriter = New BinaryWriter(File.Open(nomeArquivo, FileMode.Create))
writer.Write("macoratti")
writer.Write("numsey")
writer.Write(0.25F)
writer.Write("c:\dados\config")
writer.Write(10)
writer.Write(True)
End Using
End Sub
Sub ExibirValores()
Dim nomeUsuario As String
Dim senhaUsuario As String
Dim percentual As Single
Dim pastaBackup As String
Dim tempoEspera As Integer
Dim exibirDados As Boolean
If (File.Exists(nomeArquivo)) Then
Using reader As BinaryReader = New BinaryReader(File.Open(nomeArquivo, FileMode.Open))
nomeUsuario = reader.ReadString()
senhaUsuario = reader.ReadString()
percentual = reader.ReadSingle()
pastaBackup = reader.ReadString()
tempoEspera = reader.ReadInt32()
exibirDados = reader.ReadBoolean()
End Using
Console.WriteLine("Nome do usuário : " & nomeUsuario)
Console.WriteLine("Senha do usuário : " & senhaUsuario)
Console.WriteLine("Percentual Multa : " & percentual)
Console.WriteLine("Pasta de Backup : " & pastaBackup)
Console.WriteLine("Tempo de Espera : " & tempoEspera)
Console.WriteLine("Exibe Configuracao : " & exibirDados)
End If
End Sub
End Module
|
Neste código fizemos o seguinte:
Definimos o local e nome do arquivo a ser gerado;
Gravamos os dados no arquivo usando a classe BinaryWriter e o método Write e suas sobrecargas;
Lemos o conteúdo do arquivo usando a classe BinaryReader usando os métodos para cada tipo de dado a ser obtido;
Executando o projeto iremos obter o seguinte resultado:
A seguir verificamos a pasta c:\dados\config contendo o arquivo ConfigDemo.bin e seu conteúdo exposto no editor de textos Sublime:
Observe que o contéudo esta no formato binário.
Pegue o projeto completo aqui : Vbnet_BinaryReadWrite.zip
"Porque a lei foi dada por Moisés; a graça e a verdade vieram por Jesus Cristo." João 1:17
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
VB .NET- Convertendo String para Binary e vice-versa - Macoratti
C# - Lendo e escrevendo em arquivos textos e binários - Macoratti
VB.NET - Criar, Ler, Escrever, Copiar e Deletar arquivos ... - Macoratti