开发者

Copy PDfs Files to shared network and files corrupted

开发者 https://www.devze.com 2022-12-30 18:00 出处:网络
My app Windows forms .NET in Win XP copy files pdfs in shared network folder in a server win 2003. Admin user in Win2003 detects some corrupt files pdfs, in that shared folder.

My app Windows forms .NET in Win XP copy files pdfs in shared network folder in a server win 2003.

Admin user in Win2003 detects some corrupt files pdfs, in that shared folder.

HOw can I check if a file is copied right in shared folder ??

the code: I use two ways to copy/move files to shared folder

  1. NOte: my app generates PDFs files

  2. Write Bytes to disk (the shared folder)

    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
    

    End Function

2 Move File to shared network folder

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 = ObtenerRutaFic开发者_开发技巧heroBuzonParaIndexar(...)

      File.Move(nombreFicheroPDF, nombreFicheroBuzon)
Return nombreFicheroBuzon

End Function


To answer the question, unless you know the resulting format of the file - the only entity that can tell you if a file is corrupt or not is the application that attempts to use it. "Corruption" has no context outside of trying to use the file, it's like saying a .doc is corrupt because my CAD application can't read it, only Word can.

Also, File.Copy and File.Move exist as shortcut methods for moving files instead of manually streaming them yourself.


I had this problem, ended up I wasn't waiting long enough for the PDF Printer to finish printing the PDF, and I was only getting the first half or so of the file! Put a simple loop in my program to fix this:

// 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

精彩评论

暂无评论...
验证码 换一张
取 消