Copiar Archivos Grandes (Solucionado)

Copiar Archivos Grandes (Solucionado)
Artículo
Citar    Descargar mensaje  
Mensaje Copiar Archivos Grandes (Solucionado) 
 
Estoy con una aplicación en la que copio archivos de gran tamaño y quisiera saber como puedo saber que ha terminado la copia de esos ficheros.
Para copiar estoy usando el comando copy
Muchas gracias



 
última edición por garvied el Lunes, 21 Diciembre 2015, 20:04; editado 1 vez 
garvied - Perfil MP  
garvied [ Sabado, 19 Diciembre 2015, 18:13 ]


Copiar Archivos Grandes (Solucionado)
Comentarios
Citar    Descargar mensaje  
Mensaje Re: Copiar Archivos Grandes 
 
A mi parece doh que el comando Copy no permite proceder, hasta cuando el archivo no haya sido copiado definitivamente.

Con el comando Copy, pues, creo no se pueda hacer otro que esperar el fin de la copia y averiguar el tamaño del file final:

Public Sub Main()

  Dim origo, copia As String
  
    origo = "/ruta/del/archivo/origen"
    copia = "/ruta/del/archivo/copia"

     Copy origo To copia

' Averigua el tamaño del archivo origen y del archivo copia:
     If Stat(copia).Size <> Stat(origo).Size Then Print "¡Los tamaños de los dos archivos son diferentes !"

End




 
última edición por vuott el Domingo, 20 Diciembre 2015, 01:10; editado 2 veces 
vuott - Perfil MP  
vuott [ Domingo, 20 Diciembre 2015, 01:02 ]
Citar    Descargar mensaje  
Mensaje Re: Copiar Archivos Grandes 
 
Gracias por la respuesta, el problema no es que quisiese copiar otro fichero sino que al terminar de copiar el fichero debo abrirlo, al final lo conseguí usando.
Exec ["cp", ArchivoOrigen, ArchivoDestino] Wait
de esta forma el proceso espera hasta que termina la copia.



 
garvied - Perfil MP  
garvied [ Lunes, 21 Diciembre 2015, 20:04 ]
Citar    Descargar mensaje  
Mensaje Re: Copiar Archivos Grandes (Solucionado) 
 
Si quieres tener el progreso de copia del fichero, puedes emplear el comando pv (escribe man pv en el terminal para conocer su uso). Hay varias formas de hacerlo, yo hice algo similar, aunque tengo que mejorarlo un poco porque con los ficheros pequeños no funciona. Te dejo un enlace al código:

http://forge.gambas-es.org/projects...ions.module#L61

Puedes descargar el proyecto completo desde aquí para ver su funcionamiento:

http://forge.gambas-es.org/projects/simplebackup/files

Saludos



 
jguardon - Perfil MP  
jguardon [ Lunes, 21 Diciembre 2015, 20:23 ]
Citar    Descargar mensaje  
Mensaje Re: Copiar Archivos Grandes 
 
garvied escribió: [Ver mensaje]
Exec ["cp", ArchivoOrigen, ArchivoDestino] Wait


...pero estás usando un comando / programa bash con Exec....
....todo regular, pero.... yo te propongo una solución "sólo Gambas":  
Public Sub Main()

    Dim origo, copia As String
    Dim flOr, flCp As File
    Dim bb As Byte[]
    Dim quantum, lo As Integer
    Dim l As Long
    
    origo = "/ruta/del/archivo/muy/grande"
    copia = "/ruta/del/archivo-copia"
    
    flOr = Open origo For Read
    
    flCp = Open copia For Create
    
    lo = Lof(flOr)
    
    quantum = lo \ 100
    
    bb = New Byte[quantum + (lo Mod 100)]
    
    While Not Eof(flOr)
      If lo - Seek(flOr) < quantum Then quantum = lo - Seek(flOr)
      bb.Read(flOr, 0, quantum)
      bb.Write(flCp, 0, quantum)
      l += quantum
      Write #File.Out, "\r" & CStr((l * 100) \ lo) & "%"   ' Mira el porcentaje como se menea !  :-D
    Wend
    
    flCp.Close
    flOr.Close

End




 
última edición por vuott el Martes, 22 Diciembre 2015, 00:51; editado 1 vez 
vuott - Perfil MP  
vuott [ Martes, 22 Diciembre 2015, 00:50 ]
Mostrar mensajes anteriores:    
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 


   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4273s (PHP: -79% SQL: 179%)
Consultas SQL: 48 - Debug off - GZIP Activado