web-dev-qa-db-ja.com

c#system.IO.StreamをByte []に​​変換します

ストリームをバイトに変換する方法を知りたいです。

私はこのコードを見つけましたが、私の場合は機能しません:

var memoryStream = new MemoryStream();
paramFile.CopyTo(memoryStream);
byte[] myBynary = memoryStream.ToArray();
myBinary = memoryStream.ToArray();

しかし、私の場合、行paramFile.CopyTo(memoryStream)では何も起こらず、例外もありません。アプリケーションは引き続き動作しますが、コードは次の行に続きません。

ありがとう。

21
Álvaro García

ファイルを読み取る場合は、 File.ReadAllBytes Method を使用するだけです。

byte[] myBinary = File.ReadAllBytes(@"C:\MyDir\MyFile.bin");

また、sourceStreamがLengthプロパティをサポートしている限り、バイト配列を取得するためだけにMemoryStreamをコピーする必要はありません。

byte[] myBinary = new byte[paramFile.Length];
paramFile.Read(myBinary, 0, (int)paramFile.Length);
42
JamieSee

これは、Streamクラス用に作成した拡張メソッドです

 public static class StreamExtensions
    {
        public static byte[] ToByteArray(this Stream stream)
        {
            stream.Position = 0;
            byte[] buffer = new byte[stream.Length];
            for (int totalBytesCopied = 0; totalBytesCopied < stream.Length; )
                totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied);
            return buffer;
        }
    }
34
Athens Holloway