Neste artigo veremos as principais operações com arquivos usando a linguagem Visual Basic |
Copiando
arquivos
Renomeando arquivos
Excluindo arquivos
Movendo arquivos
Criando um diretório (Pasta)
Removendo um diretório (Pasta)
Movendo um diretório (Pasta)
Mudando o drive e o diretório atual
Exibindo o drive e o diretorio atual
Verificando se um arquivo existe
No artigo Usando o File System Object - FSO - Tratando arquivos e diretórios mostramos como podemos realizar operações e obter informações sobre arquivos e diretórios.
Para utilizar o objeto FSO voce precisar ter o VB6 e estar familiarizado com o novo objeto FSO .
Tá com preguiça !!!!
Bem , o VB oferece uma outra alternativa para realizar essas operações (embora esteja ultrapassada) : Os bons e velhos comandos do BASIC ...
Vamos mostrar neste artigo como fazer o serviço. Ao código...
Copiando Arquivos |
Para copiar arquivos podemos usar o comando - FileCopy. Cuja sintaxe é:
FileCopy fonte, destino
Fonte - é o nome do arquivo que desejamos copiar
Destino - é o nome do arquivo para o qual vamos copiar.
Exemplo :
FileCopy "arq1.txt", "arq2.txt"
Neste exemplo o arquivo arq1.txt é copiado do diretório atual com o nome de arq2.txt para o mesmo diretório.
Você pode especificar a localização dos arquivos informando o drive e o diretório para o fonte e o destino. Assim:
FileCopy "c:\teste\arq1.txt", "c:\windows\arq2.txt"
Aqui o arquivo arq1.txt é copiado do diretório c:\teste para o diretório c:\windows com o nome de arq2.txt
Se o arquivo fonte , arq1.txt , não for localizado ou estiver aberto , o VB retorna uma mensagem de erro:
Usando o tratamento de erros podemos contornar a situação , como o exemplo a seguir:
Formulário do projeto | Mensagem de erro mais amigável |
O código do botão Iniciar copia é o seguinte
Private Sub Command1_Click() On Error GoTo trata_erro CopyFile Text1.Text , Text2.Text MsgBox "Arquivo => " & Text1.Text & " Copiado como => " & Text2.Text, vbOKOnly Exit Sub trata_erro: If Err.Number = 53 Then MsgBox "O arquivo " & Text1.Text & " nao foi localizado ! ", , "Usando FileCopy" ElseIf Err.Number = 58 Then MsgBox "O arquivo " & Text2.Text & " já existe !!", , "Usando FileCopy" Else MsgBox "Ocorreu o erro : " & Err.Number & " - " & Err.Description End If End Sub |
Que tal usar a caixa de dialogo da cópia do Explorer durante a copia dos arquivos mostrando a progressão da mesma ? (figura a seguir)
Como isto foge um pouco do nosso assunto clique no link a seguir para ver a dica de como fazer isto : Usando a Caixa de Diálogo de Cópia do Explorer.
Renomeando arquivos |
Para renomear arquivos usamos o comando Name , com a seguinte sintaxe:
Name nomeantigo As novonome
nomeantigo - Refere-se ao nome do arquivo existente que desejamos renomear
novonome - Refere-se ao novo nome que desejamos atribuir ao arquivo.
Usando Name podemos renomear e mover o arquivo para outro diretório , mas não podemos criar um novo arquivo , diretório ou pasta.
Se o arquivo origem não for localizado ou estiver aberto o VB retorna uma mensagem de erro identica a que ocorre quando estamos copiando um arquivo.
Exemplo:
Name "c:\teste\arq1.txt" As "c:\windows\arq2.txt"
Renomeia e move o arquivo arq1.txt localizado em c:\teste para o diretório c:\windows com o nome de arq2.txt
Podemos usar o mesmo formulário que o exemplo anterior - Copiando arquivos . O código seria o seguinte:
Private Sub Command1_Click() On Error GoTo trata_erro Name Text1.Text As Text2.Text MsgBox "Arquivo => " & Text1.Text & " Renomeado como => " & Text2.Text, vbOKOnly Exit Sub trata_erro: If Err.Number = 53 Then MsgBox "O arquivo " & Text1.Text & " nao foi localizado ! ", , "Usando Name" ElseIf Err.Number = 58 Then MsgBox "O arquivo " & Text2.Text & " já existe !!", , "Usando Name" Else MsgBox "Ocorreu o erro : " & Err.Number & " - " & Err.Description End If End Sub |
Excluindo arquivos |
Para excluir arquivos usamos o comando Kill , com a sintaxe:
Kill caminhonomedoarquivo
caminhonomedoarquivo - Refere-se a localização e o nome do arquivo que desejamos deletar.
O comando Kill suporta a utilização de máscaras como: * e ?. Assim podemos excluir varios arquivos de uma vez.
Exemplo:
Kill c:\teste\arq1.txt
Exclui o arquivo arq1.txt do diretório c:\teste
Kill *.txt
Exclui todos os arquivos com extensão txt do diretório atual.
Muito cuidado ao usar Kill , pois ele literalmente 'mata' o seu arquivo , e não há como reverter a operação. (Os arquivos excluidos com Kill não vão para lixeira.)
Movendo arquivos |
Para mover arquivos no VB usamos ou o comando Name ou uma combinação dos comandos FileCopy e Kill.
Assim para mover o arquivo arq1.txt do diretorio c:\windows para o diretório c:\teste podemos fazer:
FileCopy "c:\windows\arq1.txt", "c:\teste\arq1.txt"
Kill "c:\windows\arq1.txt"
ou
Name "c:\windows\arq1.txt" AS "c:\teste\arq1.txt"
Em todas as operações com arquivos vistas até aqui o VB não fornece nenhuma mensagem se a operação foi bem sucedida.
Criando um diretório ( Pasta ) |
Para criar um dirétório usamos o comando MkDir , com a sintaxe:
MkDir caminhonomedapasta
caminhonomedapasta - Deve ser informado o caminho e o nome do diretório a ser criado.
Se o caminho não for informado o diretório será criado dentro do diretório atual.
Exemplo:
MkDir "c:\teste\dir1"
Cria o diretório dir1 dentro do diretório teste no drive c:.
Se a operação falhar o VB informa com uma mensagem de erro. Se a operação for bem sucedida não há mensagem alguma.
Assim se voce tentar criar um diretório que já existe ou se tentar criar um diretório em um diretório pai que não existe , obterá as seguintes mensagens de erro:
Erro quando o diretório já existe | Erro quando o diretório pai não existe |
Removendo um diretório ( Pasta ) |
Para remover um dirétório usamos o comando RmDir , com a sintaxe:
RmDir caminhonomedapasta
caminhonomedapasta - Deve ser informado o caminho e o nome do diretório a ser removido.
Você não pode remover um diretório que contenha arquivos. Para remover o diretório devemos excluir todos os arquivos do mesmo usando o comando Kill visto anteriormente.
Exemplo:
RmDir "c:\teste"
Remove o diretório teste do drive c: ( se o mesmo estiver vazio )
Se o diretório a ser removido não existir ou se o diretório não estiver vazio teremos as seguintes mensagens de erro:
Erro quando o diretório não existe | Erro quando o diretório não está vazio |
Movendo um diretório ( Pasta ) |
Não existe um comando para remover diretórios no VB. Para fazer isto devemos combinar os comandos MkDir, CopyFile , Kill e RmDir para Criar um novo diretório , Copiar todos os arquivos do diretório origem para o novo diretório, Remover todos os arquivos do diretório origem e Remover o diretório origem.
Exemplo: Suponha que desejamos mover o diretório c:\teste para dentro do diretório c:\windows ( c:\teste não está vazio.) Vejamos os passos:
1- Criar o diretório em
c:\windows - Mkdir "c:\windows\teste"
2- Copiar cada arquivo em c:\teste para c:\windows\teste - Filecopy
"c:\teste\arquivo1", "c:\windows\teste\arquivo1"
3- Remover todos os arquivos em c:\teste - Kill
"c:\teste\*.*"
4- Excluir o diretório c:\teste - RmDir
"c:\teste"
ou podemos usar o comando Name como a seguir:
Name "c:\teste" As "c:\windows\teste"
O diretório c:\teste e todo o seu conteúdo será movido para a pasta c:\windows.
Exibindo o diretório e drive atual |
Para exibir o diretório atual usamos o comando CurDir, com a seguinte Sintaxe.
CurDir[(drive)]
drive - Indica um drive existente. Se nada for informado ou se for informado uma string vazia ( "") o comando retorna o caminho para drive atual.
Exemplo:
Supondo que:
O caminho atual é
"C:\WINDOWS\SYSTEM" .
O caminho atual para o drive D: é "D:\EXCEL".
O drive atual é C:
iremos obter :
Dim caminho
caminho = CurDir ' Retorna "C:\WINDOWS\SYSTEM".
caminho = CurDir("C") ' Retorna "C:\WINDOWS\SYSTEM".
caminho = CurDir("D") ' Retorna "D:\EXCEL".
Mudando o drive atual |
Para mudar o drive atual usamos o comando ChDrive, com a seguinte Sintaxe.
ChDrive drive
drive - Indica um drive existente. Se for informado uma string vazia ( "") o drive não muda.
Exemplo:
ChDrive "D"
Torna o drive D: o drive atual
Mudando o diretório atual |
Para mudar o diretório atual usamos o comando ChDir, com a seguinte Sintaxe.
ChDir caminho
caminho - Indica o nome do diretório ou pasta que se tornará o diretório ou pasta padrão.Se o drive nao for informado o comando irá mudar o diretorio no drive atual.
Exemplo:
ChDir "c:\teste"
Torna o diretórioi c:\teste o diretório padrão atual.
ChDir muda o diretório padrão mas não o drive padrão. Portanto se o drive padrão for C, o exemplo a seguir muda o diretório padrão no drive D , mas o drive C continua o drive padrão:
ChDir "D:\teste"
Para alterar o drive e diretório padrão fazermos:
ChDrive ("d")
ChDir "\teste"
MsgBox "O diretório atual é " & CurDir
Verificando se um arquivo existe |
Para verificar se um arquivo existe podemos usar a função Dir , com a seguinte sintaxe:
Dir[(caminho[, atributos])]
caminho - Indica o nome do arquivo que desejamos verificar a existência. Pode incluir o drive e o diretório. Se o arquivo nao for encontrado uma string vazia ("") será retornada.
atributos - É opcional e especifica o atributo do arquivo a ser encontrado. Se for omitido os arquivos retornados serão os que atendam a condição e que não possuam atributo.
Os possíveis atributos são:
Constante | Valor | Descrição |
vbNormal | 0 | (Padrão) Indica arquivos sem atributo. |
vbReadOnly | 1 | Indica arquivos somente leitura e arquivos que nao possuem atributos. |
vbHidden | 2 | Indica arquivos ocultos em adição a arquivos sem atributos.. |
VbSystem | 4 | Indica arquivos de sistema e arquivos sem atributos.. |
vbVolume | 8 | Indica o nome do volume. |
vbDirectory | 16 | Indica diretórios e pastas em adição a arquivos sem atributos.. |
Note A função Dir suporta o uso de coringas tais como; * e ? .
Exemplo1:
Dim retval As String retval = Dir("c:\teste\arq1.txt") If retval = "arq1.txt" Then MsgBox "arq1.txt existe." End If End Sub |
Exemplo2:
|
Creio que tudo ficou esclarecido , mesmo por que , o que foi abordado são conceitos básicos e de simples assimilação. Se você já conhece tudo o que foi exposto lembre-se que para quem esta começando agora tudo é novidade, e, um dos meus objetivos é justamente ajudar os novatos.
Referências: