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.增加显示文件大小功能。");

}

}

}