none
Copiar arquivo da pasta RESOURCES para outra pasta RRS feed

  • Pergunta

  •   Estou me batendo para tentar copiar um arquivo da pasta RESOURCES para outra pasta no computador com o VB 2008 Express. Alguém, por caridade, poderia dar uma luz?

    domingo, 15 de abril de 2012 23:41

Todas as Respostas

  •   Estou me batendo para tentar copiar um arquivo da pasta RESOURCES para outra pasta no computador com o VB 2008 Express. Alguém, por caridade, poderia dar uma luz?

     

    domingo, 15 de abril de 2012 23:40
  • Marcelo,

    Poderia dar maiores detalhes do que você está tentando fazer? Você quer simplesmente copiar um arquivo da pasta de Resources para outro lugar? Se sim, qual é o problema? Você nao está conseguindo?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 17 de abril de 2012 10:35
    Moderador
  • Prezado(a),
    Estou migrando seu post para o fórum de Visual Studio Geral.
    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
    Obrigado.

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 17 de abril de 2012 10:36
    Moderador
  • Marcelo,

    Poderia dar maiores detalhes do que você está tentando fazer? Você quer simplesmente copiar um arquivo da pasta de Resources para outro lugar? Se sim, qual é o problema? Você nao está conseguindo?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

     Veja bem. Como a minha aplicação usa banco de dados access 2007, adicionei uma cópia deste na pasta RESOURSES e no LOAD do form fiz assim:

    If Not My.Computer.FileSystem.FileExists(Application.StartupPath & "\GSDB.accdb") Then
                If MessageBox.Show("Um Erro impediu que o aplicativo tivesse acesso ao banco de dados. Isto pode ter ocorrido em função de que o banco de dados não esteja disponível no diretório do programa. Certifique se de que o banco de dados esteja no diretório do executável e tente novamente. VOCÊ PODE CRIAR UM NOVO ARQUIVO DE BANCO DE DADOS. DESEJA CRIAR UM NOVO ARQUIVO AGORA?", "Erro na conexão do banco de dados", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
    
    form2.Show()
         Else
                    Application.ExitThread()
                    Application.Exit()
                End If
            End If




     Então nesta form que é chamada (form2) tem uma função responsável pela cópia deste banco de dados para o diretório da aplicação:

    Public Sub SaveToDisk(ByVal resourceName As String, ByVal fileName As String)
    
                    Dim assy As [Assembly] = [Assembly].GetExecutingAssembly()
    
                  For Each resource As String In assy.GetManifestResourceNames()
    
                If resource.ToLower().IndexOf(resourceName.ToLower) <> -1 Then
                   
                    Using resourceStream As Stream = assy.GetManifestResourceStream(resource)
    
                        If resourceStream IsNot Nothing Then
                            Using reader As New BinaryReader(resourceStream)
                                
                                Dim buffer() As Byte = reader.ReadBytes(CInt(resourceStream.Length))
                                Using outputStream As New FileStream(fileName, FileMode.Create)
                                    Using writer As New BinaryWriter(outputStream)
    
                                                                            writer.Write(buffer)
                                    End Using
                                End Using
                            End Using
                        End If
                    End Using
                    Exit For
                End If
            Next resource
        End Sub

    Então chamo a rotina assim:

    SaveToDisk("1", Application.StartupPath & "\GSDB.accdb")

      Ele até copia o banco de dados, porém, nem sempre copia do jeito correto. Às vezes o banco fica somente com 1kb (corrompido) e sem serventia. Algyém conhece uma maneira melhor para este tipo de manobra?



    • Editado MarceloTEK quarta-feira, 25 de abril de 2012 08:20
    quarta-feira, 25 de abril de 2012 08:15