//定义源文件和目标文件,绝对路径
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. thinkphp5使用querylist采集图片示例

    首先composer引入querylist composer require jaeger/querylist 注意需要php7.0以上版本 <?php namespace app\index\ ...

  2. android SDK manager 无法获取更新版本的解决办法

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.c ...

  3. 【ACM】Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  4. JS——jquery UI

    1. draggable() 滑动条demo: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  5. Stars(树状数组)

    算法学习:http://www.cnblogs.com/George1994/p/7710886.html 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid ...

  6. (转载)ASP.NET Quiz Answers: Does Page.Cache leak memory?

    原文地址:http://blogs.msdn.com/b/tess/archive/2006/08/11/695268.aspx "We use Page.Cache to store te ...

  7. vue实现pdf导出,解决生成canvas模糊等问题

    最近公司项目需要,利用vue实现pdf导出,从而保存到本地打印出来,说起来好像也很容易,具体要怎么实现呢? 1 .我们要添加两个模块 第一个.将页面html转换成图片 npm install --sa ...

  8. 获取hudson持续构建编译结果的一种方法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 很多时候使用hudson结合VisualStudio进行持续构建后需要获取持续构建的编译结果,通过编译结果来知道哪些项 ...

  9. 父类和子类以及super关键字

    super和this关键字的特点类似:super代表的是父类对象的引用. 当子父类的成员出现同名时,可以通过super来进行区分. 子类的构造方法中,通过super关键字调用父类的构造方法. publ ...

  10. VS中生成网站和发布网站的区别

       VS中生成网站和发布网站的区别      生成网站:是网站项目的编译. 我们知道像一样的C#编译性语言,在运行程序的时候,首先都要经过编译成计算机识别的二进制代码,才能运行.还有网站编译后,浏览 ...