 VB.NET 
- Arquivos e diretórios
VB.NET 
- Arquivos e diretórios
As classes Directory e File contém métodos estáticos que definem ou retornam informação sobre entradas no sistema de arquivo.
Diretórios e Arquivos
Graças aos métodos GetDirectories e GetFiles você precisa de poucas linhas de código para interagir sobre todos os diretórios e arquivos da árvore de diretório.
O no exemplo de código a seguir estamos exibindo a estrutura da árvore de diretório e os nomes dos arquivos em cada pasta (opcional)
| Private Sub exibeArvoreDiretorio(ByVal dir As String, ByVal exibeArquivos As Boolean, Optional ByVal nivel As Integer = 0) ' Exibe o nome da pasta com a identação correta         lstDiretorios.Items.Add(New String("-"c, nivel * 2) & dir)Try ' Exibe todos os arquivos na pasta com a identanção correta If exibeArquivos Then For Each nome As String In Directory.GetFiles(dir)                     lstDiretorios.Items.Add(New String(" "c, nivel * 2 + 2) & nome)Next End If ' Uma chamada recursiva para exibir todos os subdiretorios da pasta For Each subdir As String In Directory.GetDirectories(dir) exibeArvoreDiretorio(subdir, exibeArquivos, nivel + 1) Next         Catch 
               Throw New Exception("ocorreu um erro")    End Try End Sub 
 | 
Como exemplo de utilização da rotina acima podemos fazer a seguinte chamada : exibeArvoreDiretorio("d:\aspnet", True, 2) que tem como resultado a figura abaixo:
|  | 
Você pode passar o nome do diretório para a rotina exibeArvoreDiretorio ou mesmo exibir a árvore de diretório de todos os drives no seu sistema usando o método GetLogicalDrives do tipo Directory:
| Private
    Sub Button1_Click(ByVal 
    sender As System.Object,
    ByVal e 
    As System.EventArgs)
    Handles Button1.Click 
    'A execução desta operação pode 
    demorar um longo tempo | 
O exemplo a seguir exibe os arquivos com extensão definida em uma pasta do sistema de arquivos:
| Private
    Sub Button2_Click(ByVal 
    sender As System.Object,
    ByVal e 
    As System.EventArgs)
    Handles Button2.Click 
    ' exibe todos os arquivos em uma pasta 
    especifica lstDiretorios.Items.Add(nome) Next End If End Sub | 
No VB2005 os métodos GetFiles e GetDirectories agora podem procurar automaticamente nos subdiretórios. Por exemplo o código a seguir exibe todas as DLLs na pasta d:\windows;
| Private
      Sub Button3_Click(ByVal 
      sender As 
      System.Object, ByVal 
      e As System.EventArgs)
      Handles 
      Button3.Click For Each arquivo As String In Directory.GetFiles("d:\windows", "*.dll", SearchOption.AllDirectories) lstDiretorios.Items.Add((arquivo) Next | 
O VB .NET apresenta também 3 novos método para a classe File.
1- O método Replace realiza uma operação de mover e copiar com um comando único - isto cria uma cópia de segurança do arquivo de destino e então copia o arquivo fonte para o arquivo de destino. Você pode usar também o argumento opcional que se for definido como True faz com que qualquer erro que possa ocorrer seja ignorado:
Exemplo: O exemplo a seguir faz o backup do conteúdo atual de c:\data.mdf em c:\data.bak, e então ' copia o conteúdo de c:\novodata.mdf para c:\data.mdf.
File.Replace("d:\data.mdf", "c:\novodata.mdf", "c:\data.bak", True)
2- O novo método Encrypt efetua a criptografia de um arquivo em uma partição do sistema NTFS de forma que ele somente pode ser lido pelo usuário atual. O processo pode ser revertido pelo método Decrypt:
a- Cifrar - File.Encrypt("c:\teste\dados.txt")
b- Reverter : File.Decrypt("c:\teste\dados.txt")
As operações de leitura e gravação usando a classe File agora realizam operações de leitura e gravação atômicas em arquivos textos e binários de uma forma muito simples:
- Você pode ser um arquivo de texto inteiro usando o método ReadAllText e gravar o arquivo inteiro usando o método WriteAllText
Ex:Lê um arquivo texto , converte o conteúdo para caixa alta e salva em outro arquivo:
Dim texto As String = File.ReadAllText("c:\teste.txt")
File.WriteAllText("c:\teste2.txt", texto.ToUpper())
Você também pode ler e escrever usando um array de strings por meio dos métodos ReadAllLines e WriteAllLines:
Exemplo:
| ' Lê o 
    arquivo fonte para um array de strings Dim linhas() As String = File.ReadAlllinhas("c:\fonte.txt") Dim contador As Integer = 0 
    ' Exclui linhas vazias , movendo as linhas 
    não vazias para o indice mais inferior       If 
    linhas(i).Trim.Length > 0 Then ReDim Preserve linhas(contador- 1) File.WriteAllLines("c:\destino.txt", linhas) . | 
O método AppendAllText anexa uma string para um arquivo texto existente ou cria um arquivo texto se ele não existir ainda:
Exemplo: Anexa uma mensagem ao 
arquivo de log criar o arquivo se for preciso:
 
| Dim msg 
    As
    String = 
    String.Format("Aplicação 
    iniciada as {0}{1}", Now, ControlChars.CrLf) 
	File.AppendAllText("c:\log.txt", 
    msg) | 
Para efetuar o mesmo tratamento com arquivos 
  binários temos os métodos ReadAllBytes e WriteAllBytes:
 
| ' Efetuando a cifragem de um arquivo binário Dim bytes() As Byte = File.ReadAllBytes("c:\fonte.dat") 
    ' Troca o bit em cada byte | 
Em um próximo artigo estarei falando do novo recurso do VB .NET : o suporte para ler e modificar a lista de controle de acesso do Windows (ACLs) a partir de código gerenciado sem ter que efetuar chamadas a API do Windows.
Aguarde em breve mais artigos sobre os novos recursos VB.NET. Até breve...
 
| 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 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências: