VB.NET - Copiando arquivos entre diretórios
Para copiar arquivos entre diretórios podemos usar o namespace System.IO , ele contém tipos que permitem a leitura e escrita síncrona e assíncrona em arquivos e streams de dados. As classes que vamos usar neste exemplo são :
Classes | Descrição |
---|---|
Directory | Expõe métodos estáticos para criar,mover e enumerar entre diretório e subdiretórios. |
DirectoryInfo | Expõe métodos de instância para criar,mover e enumerar entre diretório e subdiretórios. |
DirectoryNotFoundException | Uma exceção que será lançada quando um arquivo ou diretório não for localizado. |
File | Fornece métodos estáticos para criar,copiar, excluir, mover e abrir arquivos . |
FileInfo | Fornece métodos de instância para para criar,copiar, excluir, mover e abrir arquivos . |
- O botão -
Inicia copia - invoca a rotina :
copiarDiretorio passando os argumentos informados nas caixas de texto - O botão - Ver Pasta - abre a janela de diálogo OpenFileDialog para verificar o conteúdo da pasta de destino. |
No código temos a rotina - copiarDiretório(fonte, destino,sobrepor) que é usada para fazer o serviço. Você deve passar como argumentos o caminho e nome da pasta de origem e o nome da pasta de destino. O argumento para sobrescrever ou não os arquivos da pasta de destino é opcional. O namespace System.IO deve ser referenciado com cláusula Imports.
Imports System.IO
Public Class Form1Inherits System.Windows.Forms.Form
Sub copiarDiretorio(ByVal CaminhoFonte As String, ByVal CaminhoDestino As String, Optional ByVal Sobrepor As Boolean = False)
Dim DiretorioFonte As DirectoryInfo = New DirectoryInfo(CaminhoFonte) Dim DiretorioDestino As DirectoryInfo = New DirectoryInfo(CaminhoDestino)
If DiretorioFonte.Exists Then If Not DiretorioDestino.Parent.Exists Then Throw New DirectoryNotFoundException(" O diretório de destino não existe : " + DiretorioDestino.FullName) End If
If Not DiretorioDestino.Exists Then MsgBox("O diretorio destino não existe , vou criá-lo", MsgBoxStyle.Critical, "Copia") DiretorioDestino.Create() End If
'copia todos os arquivos do diretório Dim arquivos As FileInfo
For Each arquivos In DiretorioFonte.GetFiles() If Sobrepor Then arquivos.CopyTo(Path.Combine(DiretorioDestino.FullName, arquivos.Name), True) Else If Not File.Exists(Path.Combine(DiretorioDestino.FullName, arquivos.Name)) Then arquivos.CopyTo(Path.Combine(DiretorioDestino.FullName, arquivos.Name), False) End If End If Next 'copia todos os subdiretorios usando recursao Dim subdir As DirectoryInfo
For Each subdir In DiretorioFonte.GetDirectories() copiarDiretorio(subdir.FullName, Path.Combine(DiretorioDestino.FullName, subdir.Name), Sobrepor) Next ElseThrow New DirectoryNotFoundException("Diretório origem não existe " + DiretorioFonte.FullName) End If End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click copiarDiretorio(TextBox1.Text, TextBox2.Text) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click OpenFileDialog1.InitialDirectory = "c:\destino" OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|Todos (*.*)|*.*" openFileDialog1.FilterIndex = 2 openFileDialog1.RestoreDirectory = True openFileDialog1.ShowDialog() End Sub
End Class |
O código para abrir a janela de diálogo foi colocado no evento Click do botão - Ver Pasta. Após executar o código e visualizar a pasta teremos:
- Se o
diretório de destino não existir ele será criado. - No exemplo eu estou copiando todos os arquivos da pasta c:\origem para pasta c:\destino |
Você pode copiar arquivos e subdiretórios dentro do diretório de origem.
Até a próxima dica 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# ??
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
FSO - Tratando drives, diretórios e arquivos - Macoratti.net