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. RecyclerView更通用——listView的onItemClick,onLongItemClick,addHeaderView,addFooterView

    一.点击事件 setOnItemClickListener,setOnItemLongClickListener RecyclerView中虽然没有提供上面这两个接口,但是给我们提供了另外一个接口:O ...

  2. Dragger代码实现

    转自:http://www.apkbus.com/blog-705730-60436.html 在工程中引入Dagger 如果想使用Dagger的话,需要添加两个函数库: dependencies { ...

  3. Ubuntu桌面版与服务器版有什么不同?

         提到安装Linux,Ubuntu可谓是最受欢迎的.为了满足每个人的需求,出现了不少版本或风格的Ubuntu;其中两项便是桌面版与服务器版.只要发布版本号一致,这两者从核心来说也就是相同的,唯 ...

  4. PHP 初学者的学习线路和建议【1】

    先来看下PHP初学者的学习线路: (1) 熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. (2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法. ( ...

  5. Rational Rose 7.0的使用(转)

    1.Rose如何隐藏类的属性和操作? 右击类图,选择Options->Suppress Attributes/Suppress Operations 2.Rose中如何表示双向关联? 右击关联线 ...

  6. 在线编辑器kindEditor

    操作文档:http://kindeditor.net/doc.php 文件下载

  7. tomcat+mysql数据库连接池的操作

    使用tomcat中的context.xml设置连接池 打开文件:Apache Software Foundation\Tomcat 6.0\conf\context.xml <Resource ...

  8. iOS网络编程-ASIHTTPRequest框架同步请求-备用

    在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRe ...

  9. 转:Twitter.com在用哪些Javascript框架?

    原文来自于:http://blog.jobbole.com/63964/ 我一直在研究twitter.com使用的一些UI框架.下面是这些框架的清单(大部分是Javascript框架).如果你发现有些 ...

  10. RazorEngine 学习笔记

    refer : https://github.com/Antaris/RazorEngine 微软的模板编辑器. Install-Package RazorEngine using RazorEngi ...