gpt4 book ai didi

c# - 读取和剪切文件的有效方法

转载 作者:行者123 更新时间:2023-11-30 22:40:59 25 4
gpt4 key购买 nike

我需要做的是我有几个大约 2GB 的文件 (txt)。我需要剪切文件 比方说每当 '%%XGF NEW_SET' 标记出现时我需要创建新文件并存储它。我认为这个标记大约每 40-50 行出现一次。每行有大约 4-20 个字符。所以我需要把大文件切割成数千个小文件,然后再处理它们。我想到了这样的示例代码。

        DirectoryInfo di = new DirectoryInfo(ConfigurationManager.AppSettings["BilixFilesDir"]);
var files = di.GetFiles();
int count = 0;
bool hasObject = false;
StringBuilder sb = new StringBuilder();
string line = "";
foreach (var file in files)
{
using (StreamReader sr = new StreamReader(file.FullName,Encoding.GetEncoding(1250)))
{
while ((line = sr.ReadLine()) != null)
{
//when new file starts
if (line.Contains("%%XGF NEW_SET"))
{
//when new file existed I need to store old one
if (hasObject)
{
File.WriteAllText(string.Format("{0}/{1}-{2}", ConfigurationManager.AppSettings["OutputFilesDir"], count++, file.Name), sb.ToString());
sb.Length = 0;
sb.Capacity = 0;

}
//setting exist flag
hasObject = true;
}
//when there is no new object
else
//when object exists adding new lines
if (hasObject)
sb.AppendLine(line);
}
//when all work done saving last object
if (hasObject)
{
File.WriteAllText(string.Format("{0}/{1}-{2}", ConfigurationManager.AppSettings["OutputFilesDir"], count++, file.Name), sb.ToString());
sb.Length = 0;
sb.Capacity = 0;
}
}
}
}

所以我的样本看起来像那样,但我需要高效率。有什么想法可以改进我的解决方案吗?谢谢

最佳答案

与当前代码提供的效率相比,您需要什么样的效率?

就我个人而言,我的做法可能略有不同 - 让读者和作者始终保持打开状态,并写下您阅读的每一行,除非它是“剪切”行,在这种情况下,您只需关闭现有作者并开始一个新的。不过,我不会特别期望那里的效率有所不同。

关于c# - 读取和剪切文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com