我在C#中分配了一个作业,正确性将由程序进行评估。我应该创建一个程序来获取输入文本文件,并创建一个输出文本文件,其中所有文本均由某些规则证明是正确的。第三个参数是最大文本宽度。 这些是规则:
现在我们不知道文本文件是否很大。我们不能保证即使只有一行也可以容纳到内存中。应该怎么做?我尝试了一些东西,但是代码太可怕了,甚至不值得显示。我(通过评估程序)通过了几次测试,但由于超出其余部分的内存限制而失败。我不一定要求代码,但是简单的伪代码可能会有所帮助。
(我尝试过的事情很简单:我尝试逐个字符地读取输入文件并计算到目前为止的内容。我将到目前为止所读取的内容保存在一个字符串中,该字符串将作为输出文件中的行,而我猜想这是错误的方法。)
答案 0 :(得分:1)
由于这是一项任务,所以我会花点时间做研究...
我将使用类似的方法,该方法将数据块读取到预定义大小(小于内存限制的大小)的缓冲区中:
private void ReadInChunks()
{
int bufferSize = 2048;
byte[] buffer = new byte[bufferSize];
using (FileStream fs = new FileStream(@"C:\Directory\my-file.txt", FileMode.Open))
{
int offset = 0;
while (fs.Read(buffer, offset, bufferSize) > 0)
{
// do stuff with buffer
offset += bufferSize;
}
}
}