//定义源文件和目标文件,绝对路径
public static string source = @"E:\C#\C#编程语言详解.pdf";
//2014-6-10 Training
//拷贝大文件,分块拷贝
AddBigFile(source);
/// <summary>
/// 拷贝大文件
/// </summary>
/// <param name="source">原绝对路径</param>
private static void AddBigFile(string source)
{
int i = ;
using (FileStream fsRead = new FileStream(source, FileMode.Open))
{
byte[] byts = new byte[ * * ];
while (true)
{
int r = fsRead.Read(byts, , byts.Length); if (r <= )
{
Console.WriteLine("----End----");
break;
}
DataBaseController.AddFiles(source, i, byts);
Console.WriteLine("FileName:" + source + "第 " + i + "个" + "大小:" + byts.Length);
i++;
}
}
} DataBaseController.AddFiles函数是拿到二进制数据,插入数据库操作: public static class DataBaseController
{
public static readonly string connstr = "Data Source=.;Initial Catalog=AddFile;Persist Security Info=True;User ID=sa;Password=sa";
public static string Tosource = @"E:\C#\Copy123C#编程语言详解.pdf"; public static void AddFiles(string FileName,int Code,byte[] Data)
{
string sql = @"insert into FileBlock(FileName, Code, Data) values(@FileName, @Code, @Data)";
DateTime time = DateTime.Now;
SqlParameter[] pars = {
new SqlParameter("@FileName",FileName),
new SqlParameter("@Code",Code),
new SqlParameter("@Data",Data) };
int count = SqlHelper.ExecuteNonQuery(connstr, CommandType.Text, sql, pars);
} public static void GetFilesByName(string FileName)
{
string sql = @"select * from FileBlock where FileName = @FileName";
DateTime time = DateTime.Now;
SqlParameter[] pars = {
new SqlParameter("@FileName",FileName),
};
List<FileBlock> list = new List<FileBlock>();
using (SqlDataReader reader = SqlHelper.ExecuteReader(connstr, CommandType.Text, sql, pars))
{
list = Application.Data2Objects<FileBlock>(reader);
} //循环查出文件的多个块,拼接写在一个文件中
FileStream fs = new FileStream(Tosource,FileMode.Create);
foreach (var item in list)
{
fs.Write(item.Data,,item.Data.Length);
} //byte[] data = new byte[fs.Length];
//fs.Read(data,0,fs.Length);
//fs.Seek(0,SeekOrigin.Begin);
// return data;
}
} public class FileBlock
{
public int ID { get; set; }
public string FileName { get; set; }
public int Code { get; set; }
public byte[] Data { get; set; }
}

C#分块拷贝大文件的更多相关文章

  1. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  2. DELL R730 服务器拷贝大文件

    从服务器上拷贝大文件,通过USB拷贝,写入速度很慢,而且拷贝到100多G的时候直接卡死. 原因:服务器的USB是2.0,传输速率很慢. 解决方法: 找一台笔记本,USB 接口是3.0的,通过网络共享传 ...

  3. VB断点拷贝大文件(WIN7系统需要更改某个API函数,具体我也忘了)

    小弟以前租碟在电脑上看VCD,有时候拷贝经典的影片到硬盘上可惜碰到比较粗糙的碟子就很难拷贝过去,因此编了个断点拷贝文件的程序.本程序用于拷贝大文件,并可在旧文件上接着拷贝本程序能在无法读取数据的情况下 ...

  4. 【HDFS API编程】从本地拷贝文件,从本地拷贝大文件,拷贝HDFS文件到本地

    接着之前继续API操作的学习 CopyFromLocalFile: 顾名思义,从本地文件拷贝 /** * 使用Java API操作HDFS文件系统 * 关键点: * 1)create Configur ...

  5. U盘拷贝大文件提示文件过大无法拷贝解决方案

    工具: 计算机 windows操作系统 U盘 原因:由于U盘的格式问题导致的,当期的磁盘格式是FAT32类型的,无拷贝过大的文件 方法:接下来修改U盘类型,且不格式化U盘 1.键盘win+R快捷键弹出 ...

  6. 批处理学习笔记12 - 拷贝大文件到特定目录 Copy命令

    ~z 获取文件容量大小,配合变量使用 copy 拷贝命令, copy 原地址 新地址 ok,下面上代码 @echo off setlocal enabledelayedexpansion for %% ...

  7. Node.js中使用pipe拷贝大文件不能完全拷贝的解决办法

    原来的代码如下: var readable = fs.createReadStream( filepath ); var writable = fs.createWriteStream( outFil ...

  8. shell脚本实现拷贝大文件显示百分比的代码分享

    #!/bin/sh strace -q -eread cp -- "${1}" "${2}" 2>&1 \| awk '{    count += ...

  9. nodejs pipe实现大文件拷贝

    原文: http://nqdeng.github.io/7-days-nodejs/ --------------------------------------------------------- ...

随机推荐

  1. FoundToday 隐私政策

    FoundToday 隐私政策 本应用尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息.但本应用将以高度的勤勉.审慎义 ...

  2. 由奇葩cookie导致服务器500来认识cookie

    问题:cookie中文会导致服务器报500错误. 一:cookie的特点 1.以键值对的形式出现的,比如:a=b;b=c 2.中文的值需要转义 cookie的例子 <!DOCTYPE html& ...

  3. AngularJs1.X学习--路由

    [三种使用说明:] $stateProvider.state('station.printQRCode', { //params: { 'parentOfficeId': null }, //一次性参 ...

  4. 【ACM】喷水装置

    喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以 ...

  5. 002 Add Two Numbers 链表上的两数相加

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  6. linux使用echo指令向文件写入内容

    echo "aaa">test.sh 该指令会覆盖文件原内容,如果文件不存在,则创建 echo "aaa">>test.sh 追加文件内容 h ...

  7. Codeforces Round #172 (Div. 2) D. Maximum Xor Secondary 单调栈应用

    http://codeforces.com/contest/281/problem/D 要求找出一个区间,使得区间内第一大的数和第二大的数异或值最大. 首先维护一个单调递减的栈,对于每个新元素a[i] ...

  8. 5 - 参考函数-API

    5.1 鼠标管理 a). MouseClick 点击鼠标 MouseClick ( "button" [, x, y [, clicks = 1 [, speed = 10]]] ...

  9. 这个五月,我拿到了腾讯暑期offer

    前情回顾 本来学校就是双非,如果再没有些亮点,是很难进大厂的. 我比较幸运,曾在网易实习过一段时间,很感谢这段经历,让我有幸通过腾讯HR们的简历筛选. 对于腾讯春招,其实我是没有参加网申(2.28-3 ...

  10. pat1078. Hashing (25)

    1078. Hashing (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task of t ...