社区
C#
帖子详情
C# 局域网拷贝超过2G文件
xiaokan1982
2009-02-20 11:43:26
各位朋友大家好
小弟在局域网内经常要拷贝2G以上的大文件,现在产生2个问题
1。速度慢,非时间长。我的网络都是千M的
2。有时候会拷贝出错,我又要重新来。
请问个位如何能解决上面两个问题,最好给给小弟个C# 的代码
谢谢大家帮忙
...全文
533
19
打赏
收藏
C# 局域网拷贝超过2G文件
各位朋友大家好 小弟在局域网内经常要拷贝2G以上的大文件,现在产生2个问题 1。速度慢,非时间长。我的网络都是千M的 2。有时候会拷贝出错,我又要重新来。 请问个位如何能解决上面两个问题,最好给给小弟个C# 的代码 谢谢大家帮忙
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cppfaq
2009-02-20
打赏
举报
回复
最快的大文件拷贝方法
http://www.cnblogs.com/hesicong/archive/2007/08/18/860763.html
yulinlover
2009-02-20
打赏
举报
回复
在对方机器上装个Server-U,然后你这边装个FlashGet或者什么的,下载就完了呗,KMB的网络应该没问题的
yulinlover
2009-02-20
打赏
举报
回复
SHFileOperation吧,微软自己的复制拷贝功能,不知道记得对不对!
rhysming_0217
2009-02-20
打赏
举报
回复
两个星球的局域网
火星与地球
zgke
2009-02-20
打赏
举报
回复
你是用什么复制的啊.
iwxiaot
2009-02-20
打赏
举报
回复
两个国家的局域网?
成都慢生活
2009-02-20
打赏
举报
回复
I think split file with winrar or 7zip is best solution
xiaokan1982
2009-02-20
打赏
举报
回复
补充一下,我们需要对考的两台机器一台在国内,一台在美国,光线连接,到桌面是千M网线。
所以只能用代码来实现对考,不能物理接触
a12321321321312321
2009-02-20
打赏
举报
回复
[Quote=引用 14 楼 vrhero 的回复:]
既然是域环境为什么不用DFS?不是什么事都需要写代码的...操作系统复制文件比你用任何方法写程序效率更高更安全...
[/Quote]
同意
happyboxman
2009-02-20
打赏
举报
回复
(转) C# FileStream复制大文件
即每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.NET内部的System.IO.File.Copy方法。
/// <summary>
/// 复制文件
/// </summary>
/// <param name="fromFile">要复制的文件</param>
/// <param name="toFile">要保存的位置</param>
/// <param name="lengthEachTime">每次复制的长度</param>
private void CopyFile(string fromFile, string toFile, int lengthEachTime)
{
FileStream fileToCopy = new FileStream(fromFile, FileMode.Open, FileAccess.Read);
FileStream copyToFile = new FileStream(toFile, FileMode.Append, FileAccess.Write);
int lengthToCopy;
if (lengthEachTime < fileToCopy.Length)//如果分段拷贝,即每次拷贝内容小于文件总长度
{
byte[] buffer = new byte[lengthEachTime];
int copied = 0;
while (copied <= ((int)fileToCopy.Length - lengthEachTime))//拷贝主体部分
{
lengthToCopy = fileToCopy.Read(buffer, 0, lengthEachTime);
fileToCopy.Flush();
copyToFile.Write(buffer, 0, lengthEachTime);
copyToFile.Flush();
copyToFile.Position = fileToCopy.Position;
copied += lengthToCopy;
}
int left = (int)fileToCopy.Length - copied;//拷贝剩余部分
lengthToCopy = fileToCopy.Read(buffer, 0, left);
fileToCopy.Flush();
copyToFile.Write(buffer, 0, left);
copyToFile.Flush();
}
else//如果整体拷贝,即每次拷贝内容大于文件总长度
{
byte[] buffer = new byte[fileToCopy.Length];
fileToCopy.Read(buffer,0,(int)fileToCopy.Length);
fileToCopy.Flush();
copyToFile.Write(buffer, 0, (int)fileToCopy.Length);
copyToFile.Flush();
}
fileToCopy.Close();
copyToFile.Close();
}
soaringbird
2009-02-20
打赏
举报
回复
既然都有共享文件夹了,那就用dos命令copy好了
vrhero
2009-02-20
打赏
举报
回复
你这美国客户可够变态的...他们的网管水平低点儿了吧...
那你只能仿照FTP客户端复制了...
1.分块复制,多开几个线程...不过带宽在那儿摆着呢,效果未必理想...
2.分块小一点,记录分块信息,这样网络中断后就不用重头来了...类似断点续传...
xiaokan1982
2009-02-20
打赏
举报
回复
[Quote=引用 14 楼 vrhero 的回复:]
既然是域环境为什么不用DFS?不是什么事都需要写代码的...操作系统复制文件比你用任何方法写程序效率更高更安全...
[/Quote]
这些都是美国客户要求的,我们没有办法更改
我们要做的就是把这些文件拷贝过来就ok
vrhero
2009-02-20
打赏
举报
回复
既然是域环境为什么不用DFS?不是什么事都需要写代码的...操作系统复制文件比你用任何方法写程序效率更高更安全...
aimeast
2009-02-20
打赏
举报
回复
这样的情况,速度是怎么都快不了的。
因为中国和美国之间貌似只有两根光缆连接,中间还要经过日本。
且两个国家之间的数据流量又是相当的大。所以速度是不可能有提高。
你说会有拷贝出错的情况,这样的话,你可以自己写个程序。
分Block发送数据,每个Block发送完之后还要附带一个CRC 或者 MD5值。这样可以确保发送文件的正确性。
当然,还要使用多线程。单纯写个这样的程序应该还是非常简单的。
xiaokan1982
2009-02-20
打赏
举报
回复
谢谢楼上的朋友的回复。可能我还是没有表达清楚。
我的情况是,我们是域环境,美国那边是\\share folder这种形式共享的。
我的任务就是把他们的共享拷贝到我的机器上,我已经用C#代码实现了拷贝了。
主要就是用的File.Copy()这个函数,
我现在的目的就是有没有更好,更快,更优化的拷贝方法或算法。
谢谢
vrhero
2009-02-20
打赏
举报
回复
[Quote=引用 1 楼 xiaokan1982 的回复:]
补充一下,我们需要对考的两台机器一台在国内,一台在美国,光线连接,到桌面是千M网线。
所以只能用代码来实现对考,不能物理接触
[/Quote]
FTP...文件传输标准...
你们桌面万M也没用...传输速率取决于路由中最小带宽...
soaringbird
2009-02-20
打赏
举报
回复
两台机器都是千M到桌面这两台机器之间就是千M吗?桌面之间的东西还多着呢
wesleyluo
2009-02-20
打赏
举报
回复
学习下,好像有牛人已经写好了 DLL等着你用了。找找吧。
C#
实现大
文件
拷贝
//大
文件
拷贝
实例 string source = @"E:\Develop Tools\VS2010.iso"; string target = @"D:\VS2010.iso"; CopyFile(source,target); Console.ReadKey(); } private static ...
C#
以
文件
夹共享方式实现
2G
以上大
文件
传输
//下面的方法调用时最好做成异步线程,以免在
文件
过大时让用户主线程等待过久 //如果asp.net模拟域账号访问客户端共享
文件
夹,报对路径"\\xxx\folder"的访问被拒绝 //需在web.config
文件
system.web节配置&...
[
C#
] 复制
文件
并计算传输速度
创建一个大于
2G
的
文件
,将其命名为"1.zip", 并将其与测试工具放在同一个
文件
夹里,然后运行程序. 在下拉列表框里选择盘符后, 点击 开始 按钮, 等3-4分钟, 就可以得到结果.(参考下面的结果图.) u
oracle asp.net上传 下载
文件
大小只有32kb,asp默认上传大小
asp.net 上传大
文件
大小控制方案.NET默认允许上传4M的
文件
。修改 Machine.config
文件
,改动MaxRequestLength 参数的值。在c:\winnt\microsoft.net 目录下搜索该
文件
.需要注意的是:在保存
文件
时,您应该确保指定...
C#
汇总(一)
4、
C#
中所有对象共同的基类是什么? System.object 5、const和readonly有什么区别? 答:const关键字用来声明编译时常量,readonly用来声明运行时常量。 6、在方法定义中,virtual有什么含意? 被virtual修...
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章