2
當使用StringBuilder.ToString()時,我得到一個OutOfMemory異常。 因爲我的字符串需要很大的空間。 這就是爲什麼我需要一種方式(通過流式傳輸)來使其工作。如何將StringBuilder轉換爲Byte數組而不使用StringBuilder.ToString()
這是我的代碼:
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;
}
有沒有更好的辦法做到這一點? (流光?) 請給出答案的代碼示例。
謝謝。