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 Twitter
Referências: