C#实现大文件拷贝

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dome
{
    class Program
    {
        static void Main(string[] args)
        {
            //大文件拷贝实例
            string source = @"E:\Develop Tools\VS2010.iso";

            string target = @"D:\VS2010.iso";

            CopyFile(source,target);
           
            Console.ReadKey();
        }

        private static void CopyFile(string source, string target)
        {
            //1,创建一个读取文件流
            using (FileStream fs = new FileStream(source,FileMode.Open))
            {
                //2,创建一个写入文件流
                using (FileStream fsWrite = new FileStream(target,FileMode.Create))
                {
                    //3,创建一个读取文件,写入文件的缓冲区
                    byte[] buffer = new byte[1024 * 1024 * 10];
                    //4,开始读写文件
                    while (true)
                    {
                        int r = fs.Read(buffer, 0, buffer.Length);

                        //文件读取完毕
                        if (r<=0)
                        {
                            break;
                        }
                        else
                        {
                            fsWrite.Write(buffer, 0, r);
                        }
                    }
                }
            }

        }
    }
}
近来有许多大富翁朋友提出“如何在局域网内多播稳定传送大文件”的问题,为此我做了这个小程序供大家参考。我的思路:传送文件有很多方法,我看到的大富翁上的朋友说过,用udp的方式不能稳定传送大文件,故我决定采用TCPIP方式。同时考虑到速度,我提供了多线程创送的方式。程序包中有两个文件夹:1)接收程序;2)发送程序以下操作说明是针对单机操作的:1)将任意一个文件命名为“测试例子.rar”,然后放在发送程序目录下;或者启动发送程序后再选择2)启动接收程序目录下的Server.exe程序3)启动发送程序目录下的MultiThreadDemo.exe程序4)在MultiThreadDemo.exe程序中,从“Synchronization Method”GroupBox中选择一种同步方法 注意!!!!在单机操作时,只能选择Mutex方式5)在MultiThreadDemo.exe程序中,点击“创建同步对象”Button6)在MultiThreadDemo.exe程序中,点击“传送文件”Button7)传送完毕后,到接收程序目录下查看是否收到“测试例子.rar”针对局域网的操作,我没有做测试,以下是几点说明:1)自行修改“传送文件”Button的OnClick事件2)注意往不同的机子传送时,要为线程中的私有变量设置相应的IP地址和端口,同时将Server.exe拷贝到这台机子上3)可以进行异步创送,即No Synchronization和Semaphore方式读者如果想使用该例子,建立进一步完善传送过程中的容错处理。这是个demo程序,难免会有许多bug,希望读者原谅,同时把发现的问题和更好的思路发email给我。 黄晓斌 hxb_leiyuan2000@163.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值