我的应用程序Windows在Win XP中复制文件,在服务器win 2003中的共享网络文件夹中复制文件pdf。
Win2003中的管理员用户在该共享文件夹中检测到一些损坏的文件pdfs。
我可以检查文件是否正好在共享文件夹中复制了吗?
代码:我使用两种方法将文件复制/移动到共享文件夹
NOte:我的应用生成PDF文件
将字节写入磁盘(共享文件夹)
公共共享函数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
结束职能
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
答案 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);