Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - capire attributi file
Forum - C# / VB.NET - capire attributi file

Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:23
Giovedì, 09/07/2009
Ciao
Ho un piccolo problema nel capire quando la copia di un file si è definitivamente completata.
Ho usato 2 metodi, il 1° controlla il peso file con FileLen(NomeFile), il 2° controlla se il file può andare in lettura/scrittura con fs = System.IO.File.Open(NomeFile, IO.FileMode.Open, IO.FileAccess.Write, IO.FileShare.None).
Quindi se queste due condizioni sono soddisfatte il file è completo.
Il problema è che, nel mio caso usando un computer Mac, durante la copia da Mac al mio PC il peso file risulta essere quello definitivo e il file è riscrivibile anche durante la copia.

Sapreste consigliarmi un'altro sistema per fare questo tipo di controllo??

Grazie

PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 16:06
Giovedì, 09/07/2009
Potresti spiegarti un po meglio? Non ho capito tanto bene le tue intenzioni :) comunque provo ad azzardare un ipotesi: la copia di un file termina quando il file sorgente ed il file destinazione sono identici, detto questo puoi usare la funzione IO.File.Equals per verificare se sono uguali! Ad esempio:
Codice sorgente - presumibilmente VB.NET

  1. Dim f1 As New IO.FileStream(percorso1, IO.FileMode.Open)
  2.         Dim f2 As New IO.FileStream(percorso2, IO.FileMode.Open)
  3.         MsgBox(IO.File.Equals(f1, f2))


Non ho provato il codice, ma ad occhio mi sembra che sia corretto :k:

PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 16:15
Giovedì, 09/07/2009
Grazie Rise
Il problema è che la mia cartella è condivisa con un sacco di gente e ognuno può scaricare quindi non so il Path di partenza del file.
Il meccanismo è quello che hai capito.
Infatti il mio script usa una Loop.
  Do
                peso1 = FileLen(NomeFile)
                Pause(30)
                peso2 = FileLen(NomeFile)
                If peso1 = peso2 Then
                    Exit Do
                End If

poi prosegue con il controllo dei permessi

fs = System.IO.File.Open(NomeFile, IO.FileMode.Open,IO.FileAccess.Write,IO.FileShare.None)

funziona bene con Microsoft ma non con i mac e non capisco il motivo

PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 16:54
Giovedì, 09/07/2009
Sinceramente non ho mai utilizzato Macintosh e non so come funziona, quindi non credo di poterti essere utile :( prova ad attendere altre risposte :)

PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 17:13
Giovedì, 09/07/2009
Ti invidio.
Ma purtroppo li ho in mezzo alle scatole

PM Quote
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Segnala al moderatore
Postato alle 19:21
Giovedì, 09/07/2009
non puoi far fare la copia del file direttamente dal tuo programma così la puoi controllare?

PM Quote