将PDfs文件复制到共享网络和文件已损坏

时间:2010-05-19 21:20:45

标签: c# file networking copy

我的应用程序Windows在Win XP中复制文件,在服务器win 2003中的共享网络文件夹中复制文件pdf。

Win2003中的管理员用户在该共享文件夹中检测到一些损坏的文件pdfs。

我可以检查文件是否正好在共享文件夹中复制了吗?

代码:我使用两种方法将文件复制/移动到共享文件夹

  1. NOte:我的应用生成PDF文件

  2. 将字节写入磁盘(共享文件夹)

    公共共享函数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
    

    结束职能

  3. 2将文件移动到共享网络文件夹

    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 个答案:

答案 0 :(得分:0)

要回答这个问题,除非您知道文件的结果格式 - 唯一可以告诉您文件是否损坏的实体是尝试使用它的应用程序。 “腐败”没有尝试使用该文件的上下文,就像说.doc已损坏,因为我的CAD应用程序无法读取它,只有Word可以。

此外,File.Copy和File.Move作为移​​动文件的快捷方式存在,而不是自己手动流式传输。

答案 1 :(得分:0)

我遇到了这个问题,最后我没有等待PDF打印机完成打印PDF的时间,我只得到了文件的前半部分!在我的程序中放一个简单的循环来解决这个问题:

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