2017-05-21 3 views
1

私はストリーミングなどのようにそれらに書くことが私のファイル名を変換するために、複数のメモリストリームを使用しています拡張可能ではありません次のエラー:メモリストリームは、()

Unhandled Exception: System.NotSupportedException: Memory stream is not expandable. 
    at System.IO.__Error.MemoryStreamNotExpandable() 
    at System.IO.MemoryStream.set_Capacity(Int32 value) 
    at System.IO.MemoryStream.EnsureCapacity(Int32 value) 
    at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
    at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) 
    at System.IO.StreamWriter.Dispose(Boolean disposing) 
    at System.IO.TextWriter.Dispose() 
    at csharp.Program.Save() in /home/nids/Documents/csharp/Program.cs:line 91 
    at csharp.Program.Main(String[] args) in /home/nids/Documents/csharp/Program.cs:line 290 

ライン290は私がエラーを引き起こしているかわからないんだけどSave()

を呼び出すラインです!

+0

ルック91 –

+0

@QualityCatalystライン91は素晴らしい作品のStreamWriter – Meryem

答えて

3

文字列Clients.txtのutf8表現から読み込み、ファイルではないメモリストリームを作成しました。

固定バイト配列をラップするメモリストリームはサイズ変更不可能なので、初期化するバイト配列のサイズを超える書き込みはできません。あなたの意図は、あなたがMemoryStreampre-allocated以上のバイト配列を作成した場合How to Write to a file using StreamWriter?

+0

おかげで、使用しての閉じ括弧で私は投稿のコードでは6番目の行で使用する必要があり、ファイルの長さを得るためにD ! – Meryem

1

を参照し、ファイルへの書き込みをした場合

、それが拡張することはできません(つまり、あなたが起動したときに指定したサイズよりも長くなります)

var length =Encoding.UTF8.GetBytes("Clients.txt"); 
    // the length here is 11 bytes 

あなたが11のバイトよりも上の文字列を読み込むしようとすると、旧姓場合buffer of 11バイトではなく、ファイルの長さはそう、あなたがエラー

を取得する前割り当てていますあなたがラインでFileInfo.Length

関連する問題