diff --git a/CnasSynchronusClient/RemoteFileCopy.cs b/CnasSynchronusClient/RemoteFileCopy.cs index 9b41e20..5d853d1 100644 --- a/CnasSynchronusClient/RemoteFileCopy.cs +++ b/CnasSynchronusClient/RemoteFileCopy.cs @@ -163,9 +163,12 @@ namespace CnasSynchronusClient AppLog.Error("CopyFileFromRemote dst 打印日志 " + dst); AppLog.Error("CopyFileFromRemote fileName 打印日志 " + fileName); + FileStream inFileStream = null; + FileStream outFileStream = null; + try { - FileStream inFileStream = new FileStream(src, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + inFileStream = new FileStream(src, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (!Directory.Exists(dst)) { Directory.CreateDirectory(dst); @@ -173,23 +176,36 @@ namespace CnasSynchronusClient dst = Path.Combine(dst, fileName); AppLog.Error("CopyFileFromRemote dst 打印日志 " + dst); - FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate); - byte[] buf = new byte[inFileStream.Length]; + if (true == File.Exists(dst)) + { + try + { + File.SetAttributes(dst, FileAttributes.Normal); + File.Delete(dst); + } + catch { } + } + + outFileStream = new FileStream(dst, FileMode.Create); + byte[] buf = new byte[1024]; int byteCount; while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0) { outFileStream.Write(buf, 0, byteCount); } - inFileStream.Flush(); - inFileStream.Close(); - outFileStream.Flush(); - outFileStream.Close(); + outFileStream?.Flush(); } catch (Exception ex) { AppLog.Error(ex.Message); } + finally + { + inFileStream?.Close(); + inFileStream?.Dispose(); + outFileStream?.Close(); + outFileStream?.Dispose(); + } } - } }