您现在的位置: 天下网吧 >> 网吧天地 >> 天下码农 >> 微信小程序 >> 正文

C#FileStream复制大文件

2008-11-6来自网络佚名
  即每次复制文件的一小段,以节省总内存开销。当然,本机复制也可以采用.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();

        }

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛 https://bbs.txwb.com

关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩

本文来源:来自网络 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下