c# File.Copy 复制文件 拖慢硬盘
我写了个控制台小程序,就是把本地的数据库备份复制到局域网里另一台机器上,用的就是File.Copy方法 ,最初备份文件大小是700M左右 每次都能复制成功,但是当备份文件大小超过1G后就不顺利了,复制超过1G多的文件时 360安全卫士 就提示该程序“卡硬盘” 过一会机器就重启了。我觉得应该是拷文件拖慢硬盘导致的于是我就手动 鼠标右键“复制” “粘贴”到局域网里的另一台机器里 结果试了很多次都能很快的复制过去。超过1G的文件手动复制能成功,通过File.Copy方法复制就卡硬盘导致机器重启? 希望各位前辈帮忙分析分析是什么原因?怎么解决?万分谢谢~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 用数据库本身的自带的备份不可以么~? --------------------编程问答--------------------数据库可以备份到局域网中别的机器上吗,我是建的维护计划做的备份 --------------------编程问答--------------------
我是先备份到本地,然后用写的程序备份到局域网里的另一台机器上 --------------------编程问答-------------------- 在线等... --------------------编程问答-------------------- 果断把360和谐了 --------------------编程问答--------------------
如果你只问怎么拷贝的话
你可以分块拷贝
一次只拷贝1M的文件写一个循环
一点一点的拷贝完成(这种方式很常用!)
这样的代码也不多也就三十行就完事了 (虽说File.Copy只是一行)
而且你这样写能够捕捉到当前的拷贝进度
--------------------编程问答-------------------- 没有试过,不过可以用流试试,不直接用File.Copy
用流还可以批次处理,500M一次。 --------------------编程问答-------------------- 其实这个是一个相同功能不同实现方式造成的。
我理解是这样的。
File.Copy是将文件流整个读取到内存中来。然后再写到对应的位置
如果可用内存小于要copy的文件
系统就会不停的向机器要内存。不停的gc
而机器,由于内存有限,所以就没有办法提供内存,造成死循环。
而ctrl+v
是将文件分成无数块,一块一块的copy过去。
就不会存在内存不足问题。
--------------------编程问答-------------------- 晕,电脑都感染了360系列流氓病毒了还能用啊。赶快重装系统吧。 --------------------编程问答-------------------- 我现在不装360了 我真担心360把我写了一年的源码上传走。。。 --------------------编程问答-------------------- 复制大文件:http://blog.csdn.net/felomeng/article/details/2552789 --------------------编程问答-------------------- 谢谢各位前辈指点~ --------------------编程问答-------------------- 又学到好多知识 --------------------编程问答-------------------- http://www.cnblogs.com/lyhabc/p/3322437.html
这个工具 ~ 可以设置FTP --------------------编程问答-------------------- 写个BAT复制呢? --------------------编程问答-------------------- 这种小问题居然还劳驾C#,直接写bat文件丢给windows计划任务去执行不就行了吗?
补充:.NET技术 , C#