2010-05-19 7 views
0

Mon application Windows Forms .NET dans Windows XP copier des fichiers pdfs dans le dossier réseau partagé dans un serveur gagner 2003.Copier pdfs fichiers pour réseau partagé et les fichiers corrompus

utilisateur Admin dans Win2003 détecte des fichiers corrompus pdfs, dans ce dossier partagé.

Comment puis-je vérifier si un fichier est copié directement dans le dossier partagé?

le code: J'utilise deux manières de copier/déplacer des fichiers dans le dossier partagé

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

  2. Ecrire Bytes sur le disque (le dossier partagé)

    Fonction publique partagée GenerarFicheroDeBytes (ByVal datosFichero en tant que Byte(), ByVal rutaFisicaFichero As String) en tant que chaîne de caractères

    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 
    

    End Function

2 Déplacer un 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 
+2

Comment copiez-vous les fichiers? Vous voulez nous donner quelques exemples de code? – Aren

+0

Si votre exemple de code est votre code réel, je conseille d'utiliser l'instruction "Using" pour le flux de fichiers pour ranger les ressources lorsque vous avez terminé. –

Répondre

0

Pour répondre à la question, à moins que vous connaissez 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. "Corruption" n'a pas de contexte en dehors d'essayer d'utiliser le fichier, c'est comme dire qu'un .doc est corrompu parce que mon application de CAO ne peut pas le lire, seul Word peut le faire. En outre, File.Copy et File.Move existent en tant que méthodes de raccourci pour déplacer des fichiers au lieu de les diffuser manuellement manuellement.

+0

Si est le fichier PDF ??, 2 questions: 1. comment détecter l'en-tête de fichier est correct ?. 2. comment savoir si le format PDF est corrompu? merci – Kiquenet

+0

Pas sûr, vous auriez besoin de savoir quel est le format correct pour le fichier PDF, et les en-têtes, puis tester le format actuel par rapport à ce format correct pour la validité. –

0

J'ai eu ce problème, fini je n'attendais pas assez longtemps pour l'imprimante PDF pour finir d'imprimer le PDF, et je recevais seulement la première moitié du fichier! Mettez une boucle simple 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); 
+0

Je peux avoir un problème similaire. Quel est le code qui s'exécute au-dessus de cet extrait? Comment générez-vous le fichier 'OUTPUTFILEPATH'? – jtate

+0

@jayoaK - dans notre application, AutoCAD a été appelé et passé un script à exécuter, à la fin de laquelle il imprimera le dessin qu'il génère à une imprimante PdfCreator. Lorsque le contrôle revient à notre application, il reste là à attendre que le fichier PDF ait été généré (il sait quel chemin/nom de fichier le fichier sera créé). Donc l'astuce était, n'essayez pas de déplacer le fichier jusqu'à ce que nous soyons sûrs que non seulement il est créé, mais PdfCreator a fini d'écrire dans le fichier. –

Questions connexes