Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Dotinho

Problemas ao aceder a ficheiros, com streams

Mensagens Recomendadas

Dotinho

Boa noite a todos, é o seguinte, fiz um programa para fazer backups, e para copiar ficheiros, uso a função my.filesystem.copyfile().

Só que fico chateado porque em ficheiros grandes, não me mostra a percentagem, então fiz o seguinte programinha.

Private Sub FX_CopyFile(ByVal fo As String, ByVal fd As String, _
                                Optional ByVal Ff As F_SmartSync = Nothing)
            Dim sr1 As New IO.FileStream(fo, FileMode.Open)
            Dim sr2 As New IO.FileStream(fd, FileMode.CreateNew)

            Dim buff(1024) As Byte

            While sr1.Position < sr1.Length
                sr1.Read(buff, 0, 1023)
                sr2.Write(buff, 0, 1023)

                If Ff IsNot Nothing Then
                    Ff.PA_Pb.Value = (sr1.Position / sr1.Length) * 99
                    Ff.PA_Lp.Text = Format(sr1.Position / sr1.Length, "00%")
                    Ff.S_DoEvents()
                End If
            End While

            sr1.Close()
            sr2.Close()

        End Sub

Mas não sei porque, em alguns ficheiros diz: Acesso negado ao ficheiro! (isto é uma mensagem ex.message)

Outra coisa que não sei fazer, é passar as propriedades entre o ficheiro novo e o original, do tipo gostava de passar a data de modificação, para comparar se houve alteração ou não..

Penso que seja porcausa do windows 7, mas nao sei...


Luis Lourenço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Tenta, ao executar o programa, clicar com o direito sobre o ficheiro e correr como administrador.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dotinho

Pois, infelizmente, da o mesmo erro.. B)

É engraçado que já tentei usar strems, em outras funções e da na mesma o erro.


Luis Lourenço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Dotinho

Obrigado, mas já deu... eu mostro como dá:

Private Sub FX_CopyFile(ByVal fo As String, ByVal fd As String, _
                                Optional ByVal Ff As F_SmartSync = Nothing)
            Dim foi = New FileInfo(fo)
            Dim fdi = New FileInfo(fd)

            Dim sr1 = foi.OpenRead
            Dim sr2 = fdi.OpenWrite

            Dim buff(2048) As Byte

            While sr1.Position < sr1.Length
                sr1.Read(buff, 0, 1048)
                sr2.Write(buff, 0, 1048)

                If Ff IsNot Nothing Then
                    Ff.PA_Pb.Value = (sr1.Position / sr1.Length) * 99
                    Ff.PA_Lp.Text = Format(sr1.Position / sr1.Length, "00%")
                    Ff.S_DoEvents()
                End If
            End While

            sr1.Close()
            sr2.Close()

            fdi.LastWriteTime = foi.LastWriteTime


        End Sub


Luis Lourenço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
scorch

Esse plugin, como ainda não tem nenhuma versão compatível com a versão actual do fórum, foi temporariamente removido.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.