当前位置: 首页 > 编程笔记 >

C#文件分割的方法

柴琨
2023-03-14
本文向大家介绍C#文件分割的方法,包括了C#文件分割的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#文件分割的方法。分享给大家供大家参考。具体如下:

1. 小文件分割(适用于小于等于64M的文件):

using System;
using System.IO;
string filetosplit=@"C:\temp\data.bin";
string targetpath=@"D:\store";
FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
long FileLength=fsr.Length;
byte[] btArr = new byte[FileLength];
fsr.Read(btArr, 0, (int)FileLength);
fsr.Close();
int splitcount=3;
long PartLength=FileLength/splitcount+FileLength%splitcount;
int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
string strFileName=Path.GetFileName(filetosplit);
long byteCount=0;
for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
{
  FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
  fsw.Write(btArr, (int)byteCount, (int)(i<nCount?PartLength:FileLength-byteCount));
  fsw.Flush();
  fsw.Close();
}

2. 大文件分割(适用于大于64M的文件)

using System;
using System.IO
string filetosplit=@"C:\temp\data.bin";
string targetpath=@"D:\store";
FileStream fsr = new FileStream(filetosplit, FileMode.Open, FileAccess.Read);
long FileLength=fsr.Length;
byte[] btArr = new byte[FileLength];
fsr.Read(btArr, 0, (int)FileLength);
fsr.Close();
int splitcount=3;
long PartLength=FileLength/splitcount+FileLength%splitcount;
int nCount=(int)Math.Ceiling((double)FileLength/PartLength);
string strFileName=Path.GetFileName(filetosplit);
long byteCount=0;
for(int i=1;i<=nCount;i++,byteCount=(i<nCount?byteCount+PartLength:FileLength-PartLength))
{
  FileStream fsw = new FileStream(targetpath + Path.DirectorySeparatorChar+ strFileName +i, FileMode.Create, FileAccess.Write);
  long bc=byteCount;
  long PartCount=i<nCount?PartLength:FileLength-bc;
  int PartBufferCount=(int)(PartCount<int.MaxValue/32?PartCount:int.MaxValue/32);
  int nc=(int)Math.Ceiling((double)PartCount/PartBufferCount);
  for(int j=1;j<=nc;j++,bc=(j<nCount?bc+PartBufferCount:PartCount-PartBufferCount))
    fsw.Write(btArr, (int)bc, (int)(j<nc?PartBufferCount:PartCount-bc));
  fsw.Flush();
  fsw.Close();
}
fsr.Close();

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C ++中的回文分割III,包括了C ++中的回文分割III的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个包含小写字母和整数k的字符串s。我们必须维护一些属性。这些是- 首先,我们必须将s的某些字符(如果需要)更改为其他小写英文字母。 然后将字符串s分为k个子字符串,以使每个子字符串都是回文。 我们必须找到为分割字符串而需要更改的最少字符数。 因此,如果字符串像“ abab

  • 本文向大家介绍go语言实现文件分割的方法,包括了go语言实现文件分割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现文件分割的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 我正在处理这样的文本文件: 第01章 乱数假文 多洛·希特·阿梅特,一位杰出的献身者,他是一位临时顾问 第02章 献祭 临时行政长官 第03章 等等,多洛尔·马格纳·阿利夸。 带有分隔符,如“章”、“章”、“章”等...和1或2位数(“第1章”或“第01章”)。 我使用和 现在我需要拆分我的字符串,以便获得“第二十章”的文本。 对于第02章,这将是: 献祭 临时行政长官 我是Python新手,我读

  • 本文向大家介绍Laravel最佳分割路由文件(routes.php)的方式,包括了Laravel最佳分割路由文件(routes.php)的方式的使用技巧和注意事项,需要的朋友参考一下 前言 Laravel 的路由功能很强大,默认都是定义在 routes.php 文件中,随着项目越来越大,我们需要的定义的路由越来越多,想象一下,如果几百上千个路由都定义在一个文件中,如何去维护?也许还有不同的人都在同

  • 本文向大家介绍java分割文本字符串的方法,包括了java分割文本字符串的方法的使用技巧和注意事项,需要的朋友参考一下 问题:在项目中,当保存数据超过数据库字段列长度限制时,如何解决? 一种常见的解决办法是:截串存取。顾名思义,就是对大文本数据按指定长度进行截取,返回结果集依截取顺序存储在新表中。并通过在新表中创建一个type字段来标识新表中截取的内容对应旧表中的字段名,而旧表中相应的字段不再直接

  • 本文向大家介绍Jexcel实现按一定规则分割excel文件的方法,包括了Jexcel实现按一定规则分割excel文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Jexcel实现按一定规则分割excel文件的方法。分享给大家供大家参考。具体如下: 现有一个excel文档,需要读取它并按照一定的规则,分割之,分割出来的每一段记录需要单独创建一个excel文档并写入其中,一定要保证单元