我有一个大型日志文件位于正在不断写入的网络驱动器上。如何在不锁定的情况下通过代码复制它?
Try
Microsoft.VisualBasic.FileSystem.FileCopy("sourcefile", "destinationfile")
Catch ex As Exception
' Handle Error
End Try
遗憾的是,上面的代码效果不好,因为在复制文件时,没有任何内容可以写入该文件。
编辑1: 有人建议读取文件的内容并将其写入输出。我宁愿不这样做,因为文件是几千兆字节。我保留此选项仅作为最后的手段,只有在没有锁定它且没有准备内容的情况下没有其他方法来复制文件。
答案 0 :(得分:0)
如何在共享模式下使用FileOpen以及自己读写输出文件
FileOpen(1," SourceFile",OpenMode.Input,OpenAccess.Default,OpenShare.Shared) //打开目标文件在这里读取,而不是在源文件的末尾读取它//并将块写入destinatioon文件。 FILECLOSE(1)
答案 1 :(得分:0)
如果你无法复制文件来处理它,或者不想以共享模式打开文件然后以这种方式复制它,那么另一种选择是让系统生成日志文件生成一系列较小的日志文件。可能是每单位一次,或生产运行,或小时,或一天,或其他任意断点。