文件分割
2016-08-26 09:32
344 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FileSplit
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBoxFilePath.Text = openFileDialog1.FileName;
String outputPath=textBoxFilePath.Text;
int indexOfLastPoint = outputPath.LastIndexOf('.');
outputPath = outputPath.Substring(0, indexOfLastPoint);
textBoxOutPutPath.Text = outputPath;
}
}
private void btnSplit_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBoxOutPutPath.Text.Trim()))
{
return;
}
try
{
int size = Convert.ToInt32(textBoxSize.Text);
String unit = comboBoxSize.Text;
String FileName = textBoxFilePath.Text;
String outputPath=textBoxOutPutPath.Text;
if (Directory.Exists(outputPath))
{
}
else
{
DirectoryInfo directoryInfo = new DirectoryInfo(outputPath);
directoryInfo.Create();
}
SplitFile(FileName, size, unit, outputPath);
MessageBox.Show("文件分割成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void SplitFile(string FileName, int size, string unit, string outputPath)
{
int iFileSize = 0; //根据选择来设定分割的小文件的大小
switch (unit)
{
case "Byte":
iFileSize = size;
break;
case "KB":
iFileSize = size * 1024;
break;
case "MB":
iFileSize = size * 1024 * 1024;
break;
case "GB":
iFileSize = size * 1024 * 1024 * 1024;
break;
}
//以文件的全路径对应的字符串和文件打开模式来初始化FileStream文件流实例
FileStream SplitFileStream = new FileStream(FileName, FileMode.Open);
//以FileStream文件流来初始化BinaryReader文件阅读器
BinaryReader SplitFileReader = new BinaryReader(SplitFileStream);
//每次分割读取的最大数据
byte[] TempBytes;
//小文件总数
int iFileCount = (int)(SplitFileStream.Length / iFileSize);
if (SplitFileStream.Length % iFileSize != 0)
iFileCount+=1;
string inputFileName=FileName.Substring(FileName.LastIndexOf('\\')+1);
//循环将大文件分割成多个小文件
for (int i = 1; i <= iFileCount; i++)
{
//确定小文件的文件名称
string sTempFileName = outputPath + @"\" + i.ToString() + "_" + inputFileName;
//小文件名
//根据文件名称和文件打开模式来初始化FileStream文件流实例
FileStream TempStream = new FileStream(sTempFileName, FileMode.OpenOrCreate);
//以FileStream实例来创建、初始化BinaryWriter书写器实例
BinaryWriter TempWriter = new BinaryWriter(TempStream);
//从大文件中读取指定大小数据
TempBytes = SplitFileReader.ReadBytes(iFileSize);
//把此数据写入小文件
TempWriter.Write(TempBytes);
//关闭书写器,形成小文件
TempWriter.Close();
//关闭文件流
TempStream.Close();
}
//关闭大文件阅读器
SplitFileReader.Close();
SplitFileStream.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBoxSize.SelectedIndex = 1;
}
private void btnOpenOutPutPath_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBoxOutPutPath.Text.Trim()))
{
return;
}
System.Diagnostics.Process.Start("Explorer.exe", textBoxOutPutPath.Text);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FileSplit
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBoxFilePath.Text = openFileDialog1.FileName;
String outputPath=textBoxFilePath.Text;
int indexOfLastPoint = outputPath.LastIndexOf('.');
outputPath = outputPath.Substring(0, indexOfLastPoint);
textBoxOutPutPath.Text = outputPath;
}
}
private void btnSplit_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBoxOutPutPath.Text.Trim()))
{
return;
}
try
{
int size = Convert.ToInt32(textBoxSize.Text);
String unit = comboBoxSize.Text;
String FileName = textBoxFilePath.Text;
String outputPath=textBoxOutPutPath.Text;
if (Directory.Exists(outputPath))
{
}
else
{
DirectoryInfo directoryInfo = new DirectoryInfo(outputPath);
directoryInfo.Create();
}
SplitFile(FileName, size, unit, outputPath);
MessageBox.Show("文件分割成功!");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void SplitFile(string FileName, int size, string unit, string outputPath)
{
int iFileSize = 0; //根据选择来设定分割的小文件的大小
switch (unit)
{
case "Byte":
iFileSize = size;
break;
case "KB":
iFileSize = size * 1024;
break;
case "MB":
iFileSize = size * 1024 * 1024;
break;
case "GB":
iFileSize = size * 1024 * 1024 * 1024;
break;
}
//以文件的全路径对应的字符串和文件打开模式来初始化FileStream文件流实例
FileStream SplitFileStream = new FileStream(FileName, FileMode.Open);
//以FileStream文件流来初始化BinaryReader文件阅读器
BinaryReader SplitFileReader = new BinaryReader(SplitFileStream);
//每次分割读取的最大数据
byte[] TempBytes;
//小文件总数
int iFileCount = (int)(SplitFileStream.Length / iFileSize);
if (SplitFileStream.Length % iFileSize != 0)
iFileCount+=1;
string inputFileName=FileName.Substring(FileName.LastIndexOf('\\')+1);
//循环将大文件分割成多个小文件
for (int i = 1; i <= iFileCount; i++)
{
//确定小文件的文件名称
string sTempFileName = outputPath + @"\" + i.ToString() + "_" + inputFileName;
//小文件名
//根据文件名称和文件打开模式来初始化FileStream文件流实例
FileStream TempStream = new FileStream(sTempFileName, FileMode.OpenOrCreate);
//以FileStream实例来创建、初始化BinaryWriter书写器实例
BinaryWriter TempWriter = new BinaryWriter(TempStream);
//从大文件中读取指定大小数据
TempBytes = SplitFileReader.ReadBytes(iFileSize);
//把此数据写入小文件
TempWriter.Write(TempBytes);
//关闭书写器,形成小文件
TempWriter.Close();
//关闭文件流
TempStream.Close();
}
//关闭大文件阅读器
SplitFileReader.Close();
SplitFileStream.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBoxSize.SelectedIndex = 1;
}
private void btnOpenOutPutPath_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBoxOutPutPath.Text.Trim()))
{
return;
}
System.Diagnostics.Process.Start("Explorer.exe", textBoxOutPutPath.Text);
}
}
}
相关文章推荐
- 集成电路883和883b有什么区别
- 蓝鸥Unity开发基础——方法重载
- 集成电路883和883b有什么区别
- 集成电路883和883b有什么区别
- 腾讯编程
- 集成电路883和883b有什么区别
- js 禁止 复制,粘贴代码
- LeetCode: Top K Frequent Elements
- maven下载到配置到检测
- RNN 调参经验
- 版本更新
- servlet网页生成二维码
- Hash Join vs Nest Loop vs Sort Merge
- 关于grep的使用以及正则表达式
- Android Retrofit2&OkHttp3添加统一的请求头Header
- 二叉树模板
- 安全登录一天内连续输入密码错误3次,第二天才能登录
- apache开启https
- 解决ajax回调方法返回当前html的问题
- 数据显示:即使在家中,手机也是最受欢迎的设备