C#_文件的切割与合并
2021/9/28 17:12:43
本文主要是介绍C#_文件的切割与合并,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一,文件切割
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; /// <summary> /// /// </summary> public static class FileScripts { /// <summary> /// 文件切割 /// </summary> /// <param name="filePath">源文件,文件</param> /// <param name="Folder">目标路径,文件夹</param> /// <param name="partConunt">切割段数</param> public static void Split(string filePath,string Folder,int partConunt) { //如果目标路径不存在,则创建一个 if (!Directory.Exists(Folder)) { Directory.CreateDirectory(Folder); } //字节流,FileShare.Read多线程 using (FileStream streamRead = new FileStream(filePath,FileMode.Open,FileAccess.Read,FileShare.Read)) { //求每一段长度 long partLenght = streamRead.Length / partConunt; //循环段数 for (int i = 0; i < partConunt; i++) { //小文件命名:获取源文件名,不包含后缀名 string fileName = Path.GetFileNameWithoutExtension(filePath); //目标文件夹,下小文件命名,PadLeft左填充(位数,'填充数') string foldername = Folder + "/" + fileName + i.ToString().PadLeft(3,'0'); //判断是否是最后一段,如果是就把剩余加上 if (partConunt - 1 == 0) //加上剩余部分 partLenght = streamRead.Length % partLenght; //读取长度等于每段的长度 byte[] part = new byte[partLenght]; //读:存储的数组,开始,结束 streamRead.Read(part,0,part.Length); //写:目标文件夹下的小物件,写入的数据数组 File.WriteAllBytes(foldername,part); } } } }
二.路径
三.文件的合并
/// <summary> /// 文件合并 /// </summary> /// <param name="filePath">源文件夹</param> /// <param name="fileName">合并后文件名地址</param> public static void Merge(string filePath,string fileName) { //找到所有文件 FileInfo[] allFiles = new DirectoryInfo(filePath).GetFiles(); //计算总长度 long lenght = FileLenght(allFiles); //创建大文件 using (FileStream bigfile = new FileStream(fileName,FileMode.Create)) { //循环读取文件,写入到同一个文件中 bigfile.SetLength(lenght); for (int i = 0; i < allFiles.Length; i++) { byte[] fileBytes = File.ReadAllBytes(allFiles[i].FullName); bigfile.Write(fileBytes,0,fileBytes.Length); } } } //计算总长度的方法 private static long FileLenght(FileInfo[] allfiles) { long lenght = 0; for (int i = 0; i < allfiles.Length; i++) { lenght += allfiles[i].Length; } return lenght; }
四,测试、
public void OnGUI() { if (GUILayout.Button("加密")) { FileJiaMi.Encryption(path); } if (GUILayout.Button("文件拆分")) { string sourcePath = Application.dataPath + "/" + "zhandi.mp4"; string destPath = Application.persistentDataPath + "/01"; FileScripts.Split(sourcePath,destPath,5); } if (GUILayout.Button("文件合并")) { string sourcePath = Application.persistentDataPath + "/01"; string destPath = Application.dataPath + "/" + "zhandi2.mp4"; FileScripts.Merge(sourcePath,destPath); Debug.Log("合并成功"); } GUILayout.Label("Asset文件夹"+Application.dataPath); GUILayout.Label("StreamingAsset文件夹" + Application.streamingAssetsPath); GUILayout.Label("临时路径" + Application.temporaryCachePath); GUILayout.Label("持久路径" + Application.persistentDataPath); }
这篇关于C#_文件的切割与合并的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#