0 votes

Copie des fichiers PDfs sur un réseau partagé et fichiers corrompus

Mon application Windows forms .NET dans Win XP copie des fichiers pdfs dans un dossier réseau partagé dans un serveur win 2003.

L'utilisateur Admin de Win2003 détecte des fichiers pdfs corrompus dans ce dossier partagé.

Comment puis-je vérifier si un fichier est bien copié dans un dossier partagé ? merci ! !

le code : J'utilise deux méthodes pour copier/déplacer des fichiers dans un dossier partagé

  1. Remarque : mon application génère des fichiers PDF

  2. Écriture d'octets sur le disque (le dossier partagé)

    Public Shared Function GenerarFicheroDeBytes(ByVal datosFichero As Byte(), ByVal rutaFisicaFichero As String) As FileStream

    If Not Directory.Exists(Path.GetDirectoryName(rutaFisicaFichero)) Then
        Directory.CreateDirectory(Path.GetDirectoryName(rutaFisicaFichero))
    End If
    
    Dim fs As New FileStream(rutaFisicaFichero, FileMode.OpenOrCreate, FileAccess.Write)
    fs.Write(datosFichero, 0, datosFichero.Length)
    fs.Flush()
    fs.Close()
    Return fs

    Fin de la fonction

2 Déplacer le fichier vers un dossier réseau partagé

Public Function MoverFicheroABuzonParaIndexar(ByVal rutaProcesarFicherosBuzon As String, ByVal nombreFichero As String) As String

Dim nombreFicheroPDF As String = String.Empty
Dim nombreFicheroPDFRenombrado As String = String.Empty
Dim nombreFicheroBuzon As String = String.Empty 

     nombreFicheroPDF = ... Path.GetFileNameWithoutExtension(...)
     nombreFicheroBuzon = ObtenerRutaFicheroBuzonParaIndexar(...)

      File.Move(nombreFicheroPDF, nombreFicheroBuzon)
Return nombreFicheroBuzon

End Function

Salutations

merci d'avance, s'il vous plaît

0voto

Adam Houldsworth Points 38632

Pour répondre à la question, à moins de connaître le format résultant du fichier, la seule entité qui peut vous dire si un fichier est corrompu ou non est l'application qui tente de l'utiliser. La "corruption" n'a aucun contexte en dehors de la tentative d'utilisation du fichier, c'est comme dire qu'un .doc est corrompu parce que mon application de CAO ne peut pas le lire, seul Word le peut.

De même, File.Copy et File.Move existent comme méthodes de raccourci pour déplacer des fichiers au lieu de les diffuser manuellement vous-même.

0voto

Adam Nofsinger Points 1680

J'ai eu ce problème, il s'est avéré que je n'attendais pas assez longtemps pour que l'imprimante PDF finisse d'imprimer le PDF, et je ne recevais que la première moitié du fichier ! J'ai mis une simple boucle dans mon programme pour résoudre ce problème :

// the file is there, make sure it is not still growing (printing). If it is, wait for it to stop
FileInfo fi = new FileInfo(OUTPUTFILEPATH);
long lastLength;
do
{
    lastLength = fi.Length;
    Thread.Sleep(1500);
    fi.Refresh();
}
while (fi.Length > lastLength);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X