C#文件的拆分与合并操作示例代码。


全局变量定义

    int size=;//文件大小
//拆分、合并的文件数
int count;
FileInfo splitFile;
string splitFliePath;
FileStream splitFileStream; FileInfo joinFile;
string joinFliePath;
FileStream joinFileStream;

拆分文件操作

private void CheckSplit_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
txtFilePath.Text = fd.FileName;
splitFile = new FileInfo(fd.FileName);
splitFliePath = splitFile.FullName.Substring(, splitFile.FullName.Length - fd.SafeFileName.Length);
splitFileStream = new FileStream(splitFile.FullName, FileMode.Open, FileAccess.Read);
}
}
private void btnSplit_Click(object sender, EventArgs e)
{
int length = (int)splitFileStream.Length;
txtSplit.AppendText(Environment.NewLine + "拆分文件的大小:" + length + "\r\n");
count = length / (size * );
count = length % (size * ) == ? count : count + ;
for (int i = ; i <= count; i++)
{
using (FileStream fgstream = new FileStream(splitFliePath + (i - ) + splitFile.Extension, FileMode.OpenOrCreate, FileAccess.Write))
{
if (i == count)
{
size = length - (count - ) * ;
}
else
{
size = ;
}
byte[] buffer = new byte[size];
int data = ;
if ((data = splitFileStream.Read(buffer, , buffer.Length)) > )
{
BinaryWriter bWriter = new BinaryWriter(fgstream, Encoding.Default);
bWriter.Write(buffer, , data);
}
}
txtSplit.AppendText(Environment.NewLine + "拆分出文件:" + splitFliePath + (i - ) + splitFile.Extension + "\r\n");
}
txtSplit.AppendText(Environment.NewLine + "拆分完成!\r\n");
}

合并文件操作

private void CheckJoin_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
txtFlie.Text = fd.FileName;
joinFile = new FileInfo(fd.FileName);
joinFliePath = "C:\\Users\\XXXX\\Desktop\\合并\\";
}
}
private void btnJoin_Click(object sender, EventArgs e)
{
using (joinFileStream = new FileStream(joinFliePath + "join" + joinFile.Extension, FileMode.OpenOrCreate, FileAccess.Write))
{
for (int i = ; i < count; i++)
{
using (FileStream readStream = new FileStream(joinFile.FullName.Substring(, joinFile.FullName.Length - joinFile.Extension.Length - ) + i + joinFile.Extension, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[readStream.Length];
int data = ;
if ((data = readStream.Read(buffer, , buffer.Length)) > )
{
BinaryWriter binary = new BinaryWriter(joinFileStream, Encoding.Default);
binary.Write(buffer, , data);
}
}
txtJoin.AppendText(Environment.NewLine + "合并文件:" + splitFliePath + (i) + splitFile.Extension + "\r\n");
}
txtJoin.AppendText(Environment.NewLine + "合并完成!\r\n");
txtJoin.AppendText(Environment.NewLine + "合并后文件的大小:" + joinFileStream.Length + "\r\n");
}
}

C#文件的拆分与合并操作示例的更多相关文章

  1. NDK学习笔记-文件的拆分与合并

    文件的拆分与合并在开发中经常会用到,上传或是下载的时候都有这样的运用 文件拆分的思路 将文件大小拆分为n个文件 那么,每个文件的大小就是等大小的 如果文件大小被n除不尽,那么就使用n+1个文件来拆分 ...

  2. fasta文件拆分与合并

    Linux中fasta文件的拆分与合并 FASTA文件的拆分: (1)如果从一个文件a提取第11至20个序列存到另一个文件b: awk -v RS='>' 'NR>1{i++}i>= ...

  3. java 流操作对文件的分割和合并的实例详解_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 java 流操作对文件的分割和合并的实例详解 学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并. 下面是代 ...

  4. 深度学习原理与框架-Alexnet(迁移学习代码) 1.sys.argv[1:](控制台输入的参数获取第二个参数开始) 2.tf.split(对数据进行切分操作) 3.tf.concat(对数据进行合并操作) 4.tf.variable_scope(指定w的使用范围) 5.tf.get_variable(构造和获得参数) 6.np.load(加载.npy文件)

    1. sys.argv[1:]  # 在控制台进行参数的输入时,只使用第二个参数以后的数据 参数说明:控制台的输入:python test.py what, 使用sys.argv[1:],那么将获得w ...

  5. 文件操作示例脚本 tcl

    linux 下,经常会对用到文件操作,下面是一个用 tcl 写的文件操作示例脚本: 其中 set f01 [open "fix.tcl" w] 命令表示 打开或者新建一个文件“fi ...

  6. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...

  7. Goldengate进程的拆分与合并

    Goldengate的拆分与合并分类: ORACLE GoldenGate 2013-10-10 15:22 721人阅读 评论(0) 收藏 举报在使用Goldengate作为复制解决方案时,随着负载 ...

  8. php中并发读写文件冲突的解决方案(文件锁应用示例)

    PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适 ...

  9. C#路径,文件,目录,I/O常见操作

         C#路径,文件,目录,I/O常见操作 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供 ...

随机推荐

  1. Oracle 11g随Redhat 5系统自动启动与关闭的设置方法

    最近,ORACLE系统基本调试通过,是时候设置ORACLE随RHEL自动启动与关闭服务的时候了,之所以把这个任务放在最后来做,是因为我觉得这个应该不会很难,但真正实施起来,还是遇到了个不小的障碍:写好 ...

  2. java.lang.NumberFormatException: empty String 错误

    原因:前台获取的字符串,后台类型转换,与之对应的实体类中却是Integer类型,所以会报错. 排错情况:1.先检查数据库与实体类中的类型是否一致 2.检查类型转换代码,如果需要加入异常处理

  3. java第一天的疑问

    1字节 的 byte 2字节 的 char 精度 byte<short<char<int<long<float<double 随便打个整数默认为int 随便打个小数 ...

  4. 安装.net framework 4.0失败,出现HRESULT 0xc8000222错误代码

    安装了一上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了 和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了! 方法: 1 ...

  5. nginx-301重定向开始

    日常工作中使用301重定向的情况很多:如网页目录结构变动,网页重命名.网页的扩展名改变.网站域名改变.SEO优化.等等,301重定向可以很方便的使页面实现跳转. 参考 URL重写模块 一.首先更改配置 ...

  6. [算法]线段树(IntervalTree)

    转载请注明出处:http://www.cnblogs.com/StartoverX/p/4617963.html 线段树是一颗二叉搜索树,线段树将一个区间划分成一些单元区间,每一个区间对应线段树的一个 ...

  7. NET Core & VS Code 之路(2) Web API

    NET Core & VS Code 之路(2) Web API 开发Core项目的条件 Visual Studio 2015 Update 3 .NET Core 1.0.0 - VS 20 ...

  8. 关于Android WebView内容不同屏幕兼容处理

    最近团队里项目开发APP时,其中有个界面要用到WebView来显示,而不用原生的控件. 开发这个界面的时候遇到一个问题,就是Android的碎片化导致有众多屏幕分辨率,不同分辨率的屏幕对这个界面Web ...

  9. Android上传文件之FTP

    android客户端实现FTP文件(包括图片)上传应该没什么难度.写下来就了为了记录一下,望能帮到新手. 需要用到 commons-net-3.0.1.jar,后面附上jar包. 直接上代码: /** ...

  10. MVC4重复提交

    http://blog.sina.com.cn/s/blog_712ff52a0101f38r.html http://blog.csdn.net/litao2/article/details/868 ...