【发布时间】:2017-02-27 07:23:33
【问题描述】:
我正在使用.ToArray() 方法将我的字符串转换为char 数组,其大小我保持char[] buffer = new char[1000000]; 但是当我使用以下代码时:
using (StreamReader streamReader = new StreamReader(path1))
{
buffer = streamReader.ReadToEnd().ToCharArray();
}
// buffer = result.ToArray();
threadfunc(data_path1);
缓冲区的大小固定为 8190,即使在使用 .ToCharArray() 或 .ToArray() 后没有读取整个文件。
.ToCharArray() 或 .ToArray() 有大小限制的原因是什么?好像我不使用此函数一样,我能够以字符串格式读取整个文件,但是当尝试使用此函数将其转换为 char 数组时,我遇到了大小限制。
【问题讨论】:
-
您是否尝试将
ReadToEnd()和ToCharArray()的调用分开。 (即将第一个的结果放在 a 字符串中,然后在字符串上调用第二个。) -
使用
ToCharacterArray获取字符的方式... 您可以声明数组buffer而不指定大小,读取时它将调整为正确的大小。换句话说,char[] buffer;会起作用。 -
ToCharArray() 将整个字符串转换为字节数组。它对生成的数组的大小没有限制。
-
首先,在覆盖代码之前分配给
buffer的任何内容,因此您分配的1MB 缓冲区只留给垃圾收集器。问题是,文件有多大?