26

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

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

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

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

ありがとう。

4

2 に答える 2

45

ファイルを読み取る場合は、File.ReadAllBytesメソッドを使用してください。

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

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

byte[] myBinary = new byte[paramFile.Length];
paramFile.Read(myBinary, 0, (int)paramFile.Length);
于 2012-06-29T17:25:37.670 に答える
41

これは私が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;
        }
    }
于 2012-06-29T17:24:44.420 に答える