Italian file.copy ma quanto dura ?

coslad

Well-Known Member
Licensed User
Longtime User
quello che mi chiedo é come mai il comando file.copy non restituisce lo stato,come faccio a capire se il file é stato copiato ? Il flusso del codice continua dopo il comando o attende il suo termine? Chiedo questo perché se do il comando file.Delete subito dopo file.copy , per cancellare il file sorgente subito dopo averlo copiato, lo stesso non viene copiato ma subito cancellato.
 

coslad

Well-Known Member
Licensed User
Longtime User
Avevo pensato a questo ma mi sa che il file risulta presente già durante la copia e prima che sia completata, in quel modo andrei a cancellare il file sorgente prima della fine della copia
 

LucaMs

Expert
Licensed User
Longtime User
Dato che sono sveglio da due minuti, non riesco a fare sforzi cerebrali eccessivi :)

FORSE si potrebbe tentare di leggere l'ultimo byte del file che stai copiando.

Poi mi spiegherò meglio e magari proverò.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Ciao

Confrontare la dimensione dell'origine e la destinazione, qualcosa di simile a questo:


B4X:
  if File.Exist (Dir,file destinazione) then
    if file.Size(Dir,file destinazione) = file.Size(Dir,file origine) then File.delete(Dir,file origine)
  end if


Ciao
 

LucaMs

Expert
Licensed User
Longtime User
Ciao

Confrontare la dimensione dell'origine e la destinazione, qualcosa di simile a questo:


B4X:
  if File.Exist (Dir,file destinazione) then
    if file.Size(Dir,file destinazione) = file.Size(Dir,file origine) then File.delete(Dir,file origine)
  end if


Ciao


Prendendo spunto da questo (e usando il bel copia e incolla)...

Do Until file.Size(Dir,file destinazione) = file.Size(Dir,file origine)
doevents
Loop
File.delete(Dir,file origine)
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Il problema è che se il loop dura più di 5 secondi, Android blocca il processo :(
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Il problema è che se il loop dura più di 5 secondi, Android blocca il processo :(

Si può fare questo:

B4X:
Sub Process_Globals
    Dim Tim1 As Timer
 '...............
 '...............
 '...............

Sub Activity_Create(FirstTime As Boolean)

If FirstTime Then  
  Tim1.Initialize("Tim1",100) ' millisecondi
   Tim1.Enabled= false
End If

 '...............
 '...............
 '...............

' ---------- Dove si chiama copia ---- 
File.Copy(Dir,file origine, Dir,file destinazione)
Tim1.enabled = true
 '...............
 '...............
 '...............


Sub Tim1_Tick

if File.Exist (Dir,file destinazione) then
    if file.Size(Dir,file destinazione) = file.Size(Dir,file origine) then 
       File.delete(Dir,file origine)
       tim1.enabled= false
    end if
End if


End Sub


Ciao
 

coslad

Well-Known Member
Licensed User
Longtime User
A dire il vero pensavo che sarei quasi stato deriso per la domanda che mi sembrava stupida, invece vedo che la questione non lo è. Strano però che il comando delete invece abbia un ritorno booleano mentre copy no
 
Top