gpt4 book ai didi

.net - 读取大文本文件直到某个字符串

转载 作者:行者123 更新时间:2023-12-05 03:14:41 24 4
gpt4 key购买 nike

我有一个大的字符串分隔文本文件(不是单字符分隔),如下所示:

first data[STRING-SEPERATOR]second data[STRING-SEPERATOR] ...

我不想将整个文件加载到内存中,因为它的大小 (~250MB)。如果我使用 System.IO.File.ReadAllText 读取整个文件,我会得到一个 OutOfMemoryException

因此我想读取文件直到第一次出现[STRING-SEPERATOR],然后继续下一个字符串。这就像从文件中“取出”第一个数据,对其进行处理,然后继续处理现在是文件第一个数据的第二个数据

System.IO.StreamReader.ReadLine() 对我没有帮助,因为文件的内容是一行。

您知道如何在 .NET 中读取文件直到某个字符串吗?

我希望有一些想法,谢谢。

最佳答案

这应该对你有帮助。

private IEnumerable<string> ReadCharsByChunks(int chunkSize, string filePath)
{
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
byte[] buffer = new byte[chunkSize];
int currentRead;
while ((currentRead = fs.Read(buffer, 0, chunkSize)) > 0)
{
yield return Encoding.Default.GetString(buffer, 0, currentRead);
}
}
}

private void SearchWord(string searchWord)
{
StringBuilder builder = new StringBuilder();
foreach (var chars in ReadCharsByChunks(2, "sample.txt"))//Can be any number
{
builder.Append(chars);

var existing = builder.ToString();
int foundIndex = -1;
if ((foundIndex = existing.IndexOf(searchWord)) >= 0)
{
//Found
MessageBox.Show("Found");

builder.Remove(0, foundIndex + searchWord.Length);
}
else if (!existing.Contains(searchWord.First()))
{
builder.Clear();
}
}
}

关于.net - 读取大文本文件直到某个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624991/

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