terça-feira, 15 de fevereiro de 2011

Principais propriedades da classe Stream:



Métodos mais úteis da classe Stream:

A classe stream

É abstracta , e por isso não pode ser instanciada directamente. Ao implementar uma classe derivada de Stream deverá fornecer-se implementações para os métodos Read e Write.


Exemplo de escrita em um arquivo texto: StreamWriter


Public Shared Sub Main() ' Cria uma instância de um StreamWriter para escrever para um arquivo Using sw As StreamWriter = New StreamWriter("Macoratti.txt") ' Inclui algum texto sw.Write("Este é um teste") sw.WriteLine("-------------------") ' Outros objetos podem ser escritos no arquivo sw.Write("Data : ") sw.WriteLine(DateTime.Now) sw.Close() End Using End Sub


A classe Stream é implementada pelas seguintes classes:

BufferedStream: Fornece uma camada no buffer noutro stream para aumentar o desempenho.
FileStream: Fornece uma forma de ler e escrever arquivos.
MemoryStream: Fornece um stream usando a memória como forma de armazenamento.

NetworkStream:  Fornece uma forma de aceder a dados numa rede.
CryptoStream:  Fornece uma forma de suprimir dados para uma operação de criptografia.

De forma geral operações com stream envolvem operações de leitura , escrita e procura. ( read, write , seek ).

Usar Streams envolve as seguintes operações fundamentais

Ler a partir de streams. A leitura é a transferência de dados de um stream numa estrutura de dados como um array de bytes;
Escrever para streams. A escrita é a transferência de dados a partir de uma estrutura de dados para um stream;
Streams podem suportar a procura. A procura é a consulta e modificação de uma posição actual no interior do stream. A capacidade de busca depende do stream.

Exemplo de leitura de um arquivo texto : StreamReader

Public Shared Sub Main() Try ' Cria uma instância de um StreamReader para ler um arquivo                          Using sr As StreamReader = New StreamReader("Macoratti.txt") Dim line As String ' Lê e exibe as linhas do aruquivo até o fim Do line = sr.ReadLine() Console.WriteLine(line) Loop Until line Is Nothing sr.Close() End Using Catch E As Exception ' Exibe mensagem de erro Console.WriteLine("O arquivo não pode ser lido") Console.WriteLine(E.Message) End Try End Sub

CLASSESTREAM

Define propriedades e métodos que permitem realizar operações genéricas com fluxo de bytes (streams) : ler , escrever, etc.

Nota: Um stream pode ser considerado um  fluxo sequêncial de bytes com um arquivo, um dispositivo de entrada/saida, um processo de comunicação entre dois pontos ou um socket TCP/IP. (Após esta explicação eu vou continuar a usar a palavra stream na sua forma original sem tradução.)

Streams

O conceito de stream permite-nos abstrair-nos dos detalhes da estrutura de dados subjacente e utilizar um conjunto de métodos comum a vários tipos de streams.
Uma stream encapsula uma sequência de dados, frequentemente bytes.
Uma stream possui uma fonte e um destino.
Se um trecho de código escreve numa stream, ele é a fonte deste.
Se um trecho de código lê de um stream, ele é o destino deste.

Definição
Uma stream pode ser considerado um  fluxo sequêncial de bytes com um arquivo, um dispositivo de entrada/saida, um processo de comunicação entre dois pontos ou um socket TCP/IP.
Usar Streams envolve as seguintes operações fundamentais:
Ler a partir de streams. A leitura é a transferência de dados de uma stream numa estrutura de dados como um array de bytes;
Escrever para streams. A escrita é a transferência de dados a partir de uma estrutura de dados para uma stream;

As Streams podem suportar a busca.
A busca é a consulta e modificação de uma posição actual no interior da stream.
A capacidade de busca depende da stream.
O StreamReader e StreamReader são duas classes para de manipular ficheiros de texto.
Veremos de seguida um exemplo.

Imports System
Imports System.IO

Module module1
Public Sub Main()
Try
escrever()
' Criar uma intância de uma streamreader para ler dum ficheiro.
Dim sr As StreamReader = New StreamReader("testfile.txt")
Dim line As String
'ler e escrever as linhas do ficheiro até ao fim deste
Do
line = sr.ReadLine()
Console.WriteLine(line)
Loop Until line Is Nothing
sr.Close()

Catch E As Exception
' mostrar ao utilizador o que correu mal
Console.WriteLine("The file could not be read:")
Console.WriteLine(E.Message)
Console.ReadKey()
End Try
Console.ReadKey()
End Sub

Public Sub escrever()
' Cria uma instância de uma StreamWriter para escrever num ficheiro
Dim sw As StreamWriter = New StreamWriter("testfile.txt")
' Inclui algum texto
sw.Write("Este é um teste")
sw.WriteLine("-------------------")
' Outros objectos podem ser escritos no ficheiro
sw.Write("Data : ")
sw.WriteLine(DateTime.Now)
sw.Close()

End Sub

POO Avaçanda - Excepções !

No Visual Basic .NET nós podemos criar as nossas próprias excepções.
Para isso apenas temos de criar classes que derivem da classe Exception

' Definir a classe que vai tratar o erro específico
Public Class MyParameterOutOfRangeException
Inherits Exception
Public Sub New( )
MyBase.New(“O valor passado em MyParameter " _
& " está for a de limite. O valor deverá estar entre
& " 10 e 100.")
End Sub
End Class
' ...
________________________________________________________

' Definição do método que possa disparar a nossa excepção
Public Sub SomeMethod(ByVal MyParameter As Integer)
' Assegurar que o argumento é válido.
If (MyParameter < 10) Or (MyParameter > 100) Then
Throw New MyParameterOutOfRangeException( )
End If
' Corpo do método
' ...
End Sub

Public Sub SomeCaller( )

Try
SomeMethod(500)
Catch e As MyParameterOutOfRangeException
' ...
End Try
End Sub

POO Avaçanda - Excepções ...

Por vezes temos de garantir que certa parte do código é executado mesmo que tenha ocorrido uma excepção de forma a não comprometer a nossa aplicação.
Por exemplo se um ficheiro for aberto, este tem se ser fechado mesmo que ocorra uma excepção.
O bloco Try contém o bloco Finally para este propósito.
Este bloco de código é sempre executado haja ou não um excepção.

Dim s As System.IO.Stream =_
System.IO.File.Open("c:\test.txt", System.IO.FileMode.CreateNew)
Try
' Fazemos alguma coisa com o ficheiro.
' ...
Catch e As Exception
' Handle any exceptions.
' ...
Finally
‘A stream deverá ser fechada havendo ou não excepção
s.Close( )
End Try

O Visual Basic .NET pode intencionalmente tratar de excepções para indicar erros ou ocorrências invulgares.
Vejamos um exemplo em que existe um método que recebe valores nos argumentos, mas estes têm certos limites.
Este controlo é feito com a palavra throw.