当使用 StringBuilder.ToString() 时,我遇到了 OutOfMemory 异常。因为我的字符串需要大量空间。所以我需要一种方法(通过流式处理)来解决这个问题。
以下是我的代码:
有更好的方法吗?(streamer?) 请提供带有代码示例的答案。 谢谢。
以下是我的代码:
public static byte[] StringBuilderToByteArray(StringBuilder sb)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] byteArrToReturn = new byte[sb.Length];
int CHUNK_STRING_LENGTH = 30000;
byte[] byteArr;
int j=0;
while (sb.Length > CHUNK_STRING_LENGTH)
{
byteArr = encoding.GetBytes(sb.ToString(0, CHUNK_STRING_LENGTH));
sb.Remove(0, CHUNK_STRING_LENGTH);
for(int i=0; i< CHUNK_STRING_LENGTH; i++, j++){
byteArrToReturn[j] = byteArr[i];
}
}
byteArr = encoding.GetBytes(sb.ToString());
for (int i = 0; i < sb.Length; i++, j++)
{
byteArrToReturn[j] = byteArr[i];
}
return byteArrToReturn;
}
有更好的方法吗?(streamer?) 请提供带有代码示例的答案。 谢谢。