C#txt文本分割器代码 算法有点问题耗时太多 耗CPU也多 谁给个优化方案
For循环一个就够了,不要嵌套.打个比方,分成10段,文本有10000行,那嵌套就要循环10*10000次,而不嵌套,只有循环10+10000次.
你把文本按行进行分段,这样也很耗内存和计算时间,一个一两兆的文本文件,最少也得有上万行吧.建议按分段数和文本大小来确定每个分段的大小,以减少计算量.
还有你给变量取名最好都用英文的,不然让人读起来很不方便, 以后工作也不会让你取中文拼音的变量名,太别扭了.
以下代码仅做提示,未经调试,还有缺陷,比如分块的最后一块大小可能会比前面的分块大小更大.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace TXT文本分割
{
class Program
{
static void Main(string[] args)
{
CreateUserInterface();
Console.WriteLine("请输入需要分割TXT文件的文件名(备注:需要分割的TXT文件必须在程序运行目录中)");
string fileName = Console.ReadLine();
Console.WriteLine("获取程序运行目录路径");
string content = File.ReadAllText(Environment.CurrentDirectory + @"\" + fileName + @".txt", Encoding.Default);
Console.WriteLine("需要分割多少份?");
int numOfPieces = int.Parse(Console.ReadLine());
string[] contentPieces = new string[numOfPieces];
int pieceSize = contentPieces.Length / numOfPieces;
Console.WriteLine("该文本大约{0}kb\n正在分割文本文档请稍后...", content.Length / 512);
//string[] contentSplitByLine = content.Split('\n');
int currentPiece = 0;
for (; currentPiece < numOfPieces - 1; currentPiece++)
{
contentPieces[currentPiece] = content.Substring(currentPiece * pieceSize, (currentPiece + 1) * pieceSize - 1);
File.WriteAllText(Environment.CurrentDirectory + @"\" + fileName + @"_" + (currentPiece + 1) + @".txt", contentPieces[currentPiece]);
Console.WriteLine("已分割{0}份 ***{1}份", currentPiece + 1, numOfPieces);
Console.WriteLine("生成文件{0}_{1} 文件大小为{2}kb", fileName, currentPiece + 1, contentPieces[currentPiece].Length / 512);
}
//最后一块,这一块有可能比前面的块都要大(接近两倍),也有可能和前面的块刚刚好一样大
contentPieces[currentPiece] = content.Substring(currentPiece * pieceSize);
File.WriteAllText(Environment.CurrentDirectory + @"\" + fileName + @"_" + (currentPiece + 1) + @".txt", contentPieces[currentPiece]);
Console.WriteLine("已分割{0}份 ***{1}份", currentPiece + 1, numOfPieces);
Console.WriteLine("生成文件{0}_{1} 文件大小为{2}kb", fileName, currentPiece + 1, contentPieces[currentPiece].Length / 512);
Console.WriteLine("分割成功按回车键退出...");
Console.ReadLine();
}
static void CreateUserInterface()
{
Console.WriteLine("===============================================================================");
Console.WriteLine("===================== 欢迎使用TXT文本分割器 =======================");
Console.WriteLine("===============================================================================");
Console.WriteLine("软件版本1.1\n修改内容:\n1.优化分割效率分割效率提升10倍以上。");
Console.WriteLine("2.新增分割进度提示。\n3.增加显示文件大小功能。");
}
}
}