VB 2005 - O básico sobre o tratamento de arquivos
Exibindo os drives existentes no seu computador
Como acessar a lista de drives disponíveis em seu ambiente de trabalho ?
Basta você usar a coleção My.Computer.FileSystem.Drives afim de enumerar através dos drives lógicos do seu ambiente.
Em um formulário com um ListBox o seguinte código inclui o nome de cada letra de drive disponível no sistema :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each drive As IO. DriveInfo In My.Computer. FileSystem.Drives ListBox1.Items.Add(drive) Next drive End Sub |
cada item incluído aparece como < X:\> onde X representa a letra do drive. O código acima inclui objetos completos do tipo System.IO.DriveInfo na lista.
Se você quer incluir os nomes dos drives use o seguinte código:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load For Each drive As IO.DriveInfo In My.Computer.FileSystem.Drives ListBox1.Items.Add(drive.Name) Next drive End Sub |
A coleção My.Computer.FileSystem.Drivers fornece acesso a detalhes sobre cada drive local e de rede anexado a estação de trabalho. Desde de que esta é uma coleção que expõe a interface IEnumerable você pode usá-la em uma instrução For/Each acessando cada objeto drive na coleção.
Abaixo temos algumas das propriedades do objeto System.IO.DriveInfo que podem ser úteis:
|
O caminho de diretórios baseado no formato de nome usando URL contendo o prefixo, "file://" não pode ser usado com este método ou com a maioria das restrições de segurança em My.Computer.FileSystem ; de fato o usuário atual pode prevenir o acesso a certas partes do sistema de arquivos.
Verificando se um diretório existe
Use o método My.Computer. FileSystem.DirectoryExists() para determinar se um diretório existe. Você deve informar o caminho do diretório no formato de uma string para efetuar a verificação;.
O método DirectoryExists() verifica se existe o diretório , e trabalha com 3 tipos de indicação de caminho de drives:
O código abaixo supõe que você tem um o formulário Windows com um botão de comando - Button1 - e uma caixa de texto - TextBox1- onde você deve informar o caminho do diretório a ser verificado.
Private Sub Button1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click ' Verificando um diretório valido If (My.Computer.FileSystem.DirectoryExists(TextBox1.Text)) Then MsgBox("O diretório já existe.") Else MsgBox("O diretório não existe ou é parte de um caminho inválido.") End If End Sub |
Criando um novo diretório
Use o método My.Computer.FileSystem. CreateDirectory() para criar um novo diretório. Você deve informar o caminho do novo diretório a ser criado no formato de uma string válida.
O método CreateDirectory aceita a informação de um caminho absoluto ou relativo no formato UNC ou no formato padrão (letra de drive) , mas não aceita o formato de URL : "file://" . Se o diretório não puder ser criado será gerado uma exceção.
Uma variação deste método pode ser encontrado através da função System.IO.Directory.CreateDirectory( ). Esta função retorna um objeto System.IO.DirectoryInfo para o novo diretório criado. Existe outra versão sobrecarregada desta classe que aceita definições de segurança para o novo diretório.
O código abaixo supõe que você tenha um formulário contendo um botão de comando - Button1 - e uma caixa de texto - TextBox1 . O usuário deve informar caminho do diretório e o
Private Sub Button1_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click ' O usuário deve informar o caminho do diretório If TextBox1.Text = String.Empty Or TextBox1.Text.Length < 3 Then MsgBox("Informe um caminho de diretório válido.") TextBox1.Focus() Exit Sub End If ' cria o diretório solicitado pelo usuário. If (My.Computer.FileSystem.DirectoryExists(TextBox1.Text)) Then MsgBox("O diretório ja existe") Else Try My.Computer.FileSystem.CreateDirectory(TextBox1.Text) MsgBox("Diretório criado com sucesso.") Catch ex As Exception MsgBox("O diretório não pode ser criado devido ao seguinte erro:" & vbCrLf & vbCrLf & ex.Message) End Try End If End Sub |
Copiando diretórios
O método My.Computer.FileSystem.CopyDirectory() copia o conteúdo de um diretório para outro local. A sintaxe básica é:
My.Computer.FileSystem.CopyDirectory( DiretorioOrigem, DiretorioDestino)
O argumento DiretorioOrigem contém um caminho absoluto baseado no formato UNC ou no formato padrão (letra-drive) ou um caminho relativo baseado no diretório atual a partir do ponto de vista da aplicação.
O argumento DiretorioDestino contém também um caminho absoluto ou relativo.
Ex: My.Computer.FileSystem.CopyDirectory(
"C:\Macoratti", "C:\Destino")
A duplicação do diretório origem é completa , criando cópias de todos
os arquivos e diretórios subordinado em qualquer nível.
Se o diretório de destino não existir , o método CopyDirectory irá criá-lo, incluindo qualquer caminho componente não existente entre o raiz definido e o diretório final. Se o diretório de destino já existir , qualquer arquivo existente no destino se mantém intacto, e novos arquivos são copiados entre eles, resultando em um diretório de destino mesclado.
Se um dos arquivos a ser copiado já existir no destino , será gerada um exceção. Se você deseja sobrescrever qualquer arquivo que já exista no destino deve usar o argumento opcional overwrite definido com o valor true:
Ex: My.Computer.FileSystem.CopyDirectory(
diretorioOrigem, diretorioDestino, True)
Uma variação de CopyDirectory usa um diferente conjunto de argumentos
para controlar a exibição na tela e a notificação de status durante a cópia:
Ex: My.Computer.FileSystem.CopyDirectory( sourceDirectory, destDirectory, showUI [, onUserCancel])
O argumento ShowUI aceita os seguintes valores para as enumerações Microsoft.VisualBasic.FileIO.UIOption :
UIOption.AllDialogs
Um diálogo de progresso animado aparece durante a copia do diretório para indicar o status atual de cada arquivo copiado.
UIOption.OnlyErrorDialogs
Somente aviso de mensagens de erros irão aparecer. (Este o valor padrão)
UICancelOption.DoNothing
O status na tela exibido durante a cópia inclui o botão Cancel. Se o usuário clicar no botão Cancela quando a opção DoNothing estiver ativa , o código chamando CopyDirectory não irá receber qualquer notificação que a cópia foi abortada pelo usuário.
UICancelOption.ThrowException
Se o usuário clicar no botão Cancel durante a cópia, neste caso , será gerada uma exceção System.IOException que pode ser capturada pelo código.
Movendo diretórios
O método My.Computer.FileSystem.MoveDirectory() realoca o conteúdo de um diretório para outro local. A sintaxe básica é:
My.Computer.FileSystem.MoveDirectory( DiretorioOrigem, DiretorioDestino)
O argumento DiretorioOrigem contém um caminho absoluto baseado no formato UNC ou no formato padrão (letra-drive) ou um caminho relativo baseado no diretório atual a partir do ponto de vista da aplicação.
O argumento DiretorioDestino contém também um caminho absoluto ou relativo.
Se o diretório de destino não existir , o método MoveDirectory irá criá-lo, incluindo qualquer caminho componente não existente entre o raiz definido e o diretório final.
A movimentação do diretório de origem é completa, sendo movido todos os arquivos e diretórios. Você pode mover um diretório para um drive lógico.
O método MoveDirectory cria o diretório de destino se o mesmo não existir. Se o destino já existir qualquer arquivo existente no destino permanece intacto, e os novos arquivos são movidos entre eles, resultando em um diretório de destino mesclado.
Ex: My.Computer.FileSystem.CopyDirectory(
diretorioOrigem, diretorioDestino, True)
Se um dos arquivos a ser movido já existir no destino , será gerada um exceção.
Se você deseja sobrescrever qualquer arquivo que já exista no destino deve usar
o argumento opcional overwrite definido com o valor true:
Ex: My.Computer.FileSystem.MoveDirectory( diretorioOrigem, diretorioDestino, True)
Uma variação de MoveDirectory usa um diferente conjunto de argumentos para controlar a exibição na tela e a notificação de status durante a cópia:
Ex: My.Computer.FileSystem.MoveDirectory( sourceDirectory, destDirectory, showUI [, onUserCancel])
O argumento ShowUI aceita os seguintes valores para as enumerações Microsoft.VisualBasic.FileIO.UIOption :
UIOption.AllDialogs
Um diálogo de progresso animado aparece durante a movimentação do diretório para indicar o status atual de cada arquivo movido.
UIOption.OnlyErrorDialogs
Somente aviso de mensagens de erros irão aparecer. (Este o valor padrão)
UICancelOption.DoNothing
O status na tela exibido durante a movimentação inclui o botão Cancel. Se o usuário clicar no botão Cancela quando a opção DoNothing estiver ativa , o código chamando CopyDirectory não irá receber qualquer notificação que a cópia foi abortada pelo usuário.
UICancelOption.ThrowException
Se o usuário clicar no botão Cancel durante a operação, neste caso , será gerada uma exceção System.IOException que pode ser capturada pelo código.
Renomeando diretórios
O método My.Computer.FileSystem.RenameDirectory() altera o nome de um diretório. A sintaxe básica é:
My.Computer.FileSystem.RenameDirectory( DiretorioOrigem, novoNome)
O argumento DiretorioOrigem contém um caminho absoluto baseado no formato UNC ou no formato padrão (letra-drive) ou um caminho relativo baseado no diretório atual a partir do ponto de vista da aplicação.
O argumento novoNome inclui somente o novo nome do diretório. Você não pode informar um caminho relativo ou absoluto para este argumento:
Ex: Uso correto: My.Computer.FileSystem.MoveDirectory( "C:\Macoratti", "Imagens")
Ex: Uso INCORRETO: My.Computer.FileSystem.MoveDirectory( "C:\Macoratti", "C:\Imagens")
Se o diretório já existir com o nome informado, será gerada uma exceção mesmo se o diretório já existente estiver vazio.
O Visual Basic inclui a função intrínseca Rename() que também renomeia diretórios. Sua sintaxe é um pouco diferente pois o segundo argumento aceita também qualquer caminho válido:
Ex:
Rename("C:\Macoratti",
"Imagens")
Rename("C:\Macoratti", "C:\Imagens")
Ambos os comandos acima vão funcionar.
A função Rename() também move um diretório para uma árvore de diretório existente :
Rename("C:\Temp\Macoratti\Logs\", "C:\Temp\Teste\Logs")
Acabamos de ver um caso onde uma função antiga tem mais recursos que uma nova, por uma questão de consistência dê preferência ao método RenameDirectory( ).
Movendo e Copiando arquivos
Para mover um arquivo da sua localização atual para outra use o método My.Computer.FileSystem.MoveFile(), e para copiar um arquivo de um lugar para outro use o método My.Computer.FileSystem.CopyFile()
A sintaxe básica é a seguinte:
' ---- para mover um arquivo.
My.Computer.FileSystem.MoveFile(arquivoOrigem, arquivoDestino[,
overwriteFlag])
' ---- para copiar um arquivo
My.Computer.FileSystem.CopyFile(arquivoOrigem, arquivoDestino[,
overwriteFlag])
Como arquivoDestino é um nome de arquivo e não um nome de
diretório , você pode efetivamente renomear o arquivo ao mesmo
tempo que move ou copia o arquivo.
Quando estiver movendo o arquivo você pode manter o arquivo no mesmo diretório e apenas dar a ele um novo nome embora se você usar o método Renamefile() a operação será mais clara.
O atributo opcional overwriteFlag é um booleano que indica se qualquer arquivo existente no destino será substituído de forma transparente pelo arquivo origem. O valor padrão é False.
Criando arquivo temporário
Para criar um arquivo temporário na área do usuário atual use o método : My.Computer.FileSystem.GetTempFileName()
Ex: Dim arqtemp As String =
My.Computer.FileSystem.GetTempFileName( )
O nome do arquivo retornado representa um novo arquivo criado
pelo método que possui tamanho de zero bytes.
Enviando um arquivo para a lixeira
Se você precisa deletar um arquivo ou enviar um arquivo para lixeira pode usar o método My.Computer.FileSystem.DeleteFile() para excluir permanentemente um arquivo. A sintaxe básica usada é:
Ex: My.Computer.FileSystem.DeleteFile(filePath , showUI [, recycle [, onUserCancel]]] )
Para enviar o arquivo para a lixeira do Windows você deve
definir o argumento opcional de forma adequada:
Ex::
My.Computer.FileSystem.DeleteFile(filePath,
UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin)
O primeiro argumento do método aceita um único arquivo a ser
excluído, e você pode incluir até três argumentos opcionais:
- showUI - que impacta a apresentação do usuário durante a
exclusão
- recycle - que indica se a lixeira vai ser usada ou não.
- onUserCancel - que define o que irá acontecer quando o
usuário aborta a exclusão do arquivo.
- showUI aceita um dos seguintes valores de enumeração Microsoft.VisualBasic.FileIO.UIOption
O argumento recycle aceita um dos seguintes parâmetros dos seguintes valores da enumeração Microsoft.VisualBasic.FileIO.RecycleOption :
Se você incluir o argumento onUserCancel , você pode fornecer os seguintes valores da enumeração Microsoft.VisualBasic.UICancelOption:
|
Determinando se um arquivo existe
Use o método My.Computer.FileSystem.FileExists() para determinar se um caminho informado é um arquivo válido:
If (My.Computer.FileSystem.FileExists("d:\teste\Macoratti")
= True) Then MsgBox("Arquivo inválido.") Else Processa o arquivo End If |
Veja o mesmo assunto tratado nos seguintes artigos:
Até o próximo artigo VB.NET...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: