Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Manipular Arquivos


alexandremanowar

Pergunta

E ae pessoal beleza!

Estou tendo problemas ao manipular arquivos em uma aplicação descktop em vb.net 2005 que estou desenvolvendo.

A idéia é simples mas não estou conseguindo, eu preciso fazer o seguinte copiar todos os arquivos do diretório "x" por exemplo que fica no hd para o direrório "y". De modo simples eu consegui fazer tipo com um arquivo só. A idéia também é que se o arquivo que já esteja sendo copiado existir no diretório de destino então ele não precisa copiar.

Eu consegui fazer isso com um unico arquivo por vez:

Dim origem As String = "C:\origem\arquivo.doc"
            Dim destino As String = "D:\arquivo.jpg"

            File.Copy(origem, destino)

Para verificar se o arquivo já existe ou não usei uma estrutura If...Else usando File.Existe para verificar caso o arquivo já exista se não existir aí sim ele faz a cópia.

Mas preciso que ele faça isso com todos os arquivos do diretório e não estou conseguindo. Ou seja pega todos os arquivos do diretório de origem e copia para o diretório de destino e no processo verificando já existe ou não os que já existir ele não copia.

Alguém tem uma idéia de como eu posso fazer isso?

Valeu

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

E ae Graymalkin beleza

Então cara consegui fazer um esquema aqui e funcionou, porém achei que ficou meio grande. Veja o códgio:

Dim sOrigem As String = "C:\teste"
        Dim sDestino As String = "D:\teste2"
        Dim sArquivo As String = String.Empty
        Dim Arquivo As New List(Of String)
        Dim iArquivo As Integer

        Try
            'verifica se o diretório não existe
            If Dir(sDestino, FileAttribute.Directory) = String.Empty Then
                'cria o diretório
                MkDir(sDestino)
            End If
            'tenta capturar o primeiro arquivo
            sArquivo = Dir(sOrigem, FileAttribute.Archive)
            'verifica se há nome de arquivo aqui
            Do While sArquivo <> String.Empty
                'verifica se o atributo é arquivo (não pode ser um diretório)
                If (GetAttr(sOrigem & sArquivo) And FileAttribute.Archive) = FileAttribute.Archive Then
                    'adiciona a lista de arquivos
                    Arquivo.Add(sArquivo)
                End If
                'pega o próximo nome de arquivo
                sArquivo = Dir()

                Application.DoEvents()
            Loop

            'acrescenta barra no diretório
            sDestino += "\"

            'verifica se há algum arquivo a copiar
            If Arquivo.Count > 0 Then
                'percorre a lista de arquivos
                For iArquivo = 0 To Arquivo.Count - 1
                    'verifica se arquivo já existe na pasta de destino
                    If Dir(sDestino & Arquivo(iArquivo), FileAttribute.Archive) <> String.Empty Then
                        'delete o arquivo
                        Kill(sDestino & Arquivo(iArquivo))
                    End If
                    'copia o arquivo
                    My.Computer.FileSystem.CopyFile(sOrigem & Arquivo(iArquivo), sDestino & Arquivo(iArquivo))
                Next
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK)
        End Try

Será que tem um forma menor de se fazer isso? O que você achou?

Valeu pela ajuda cara.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, tá meio grande mesmo. Veja uma forma mais simples e clara:

Dim pastaOrigem As String = "c:\temp"
Dim pastaDestino As String = "d:\temp"
Dim origem, destino As String
Dim arquivos() As String

arquivos = IO.Directory.GetFiles(pastaOrigem)

For Each origem In arquivos
    destino = IO.Path.Combine(pastaDestino, IO.Path.GetFileName(origem))
    IO.File.Copy(origem, destino, True)
Next

Só não coloquei um tratamento de erro, mas bastaria um Try... Catch na penúltima linha.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest JOAO LUIZ
E a e beleza!

Ficou bem mais limpo e simples esse modo que você criou. Bacana mesmo valeu pela força e a explicação.

At+

E tem como fazer caso existam arquivos executar outra rotina no meu ex :

caso exista copile preproc.pl d:\dados\out

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...