1

以下は、最初にテキスト行をテキスト ファイルに保存し、Azure ストレージに存在し、それを読み取って出力するコードです。

string firstString = "this \t is \n a \t line \n are: ";            

            using (var memoryStream = new MemoryStream())
            {
                memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
                blockBlob.UploadFromStream(memoryStream);
            }

            string text;
            using (var memoryStream = new MemoryStream())
            {
                blockBlob.DownloadToStream(memoryStream);
                text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
                Trace.WriteLine(text);
            }

問題は、Trace.Writeline() ステートメントに何も出力されないことです。

最初はエンコーディングの問題かもしれないと思ったので、テキストファイルの形式をASCIIからUTF8に変更しましたが、まだ何も印刷されません。ここで何が欠けていますか、助けていただければ幸いです。

4

2 に答える 2

2

次のコード行を置き換えます。

 using (var memoryStream = new MemoryStream())
            {
                memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
                blockBlob.UploadFromStream(memoryStream);
            }

    using (var memoryStream = new MemoryStream())
    {
        memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length);
        memoryStream.Position = 0;
        blob.UploadFromStream(memoryStream);
    }

何が起こっているかというと、バイト配列を に書き込むときにmemoryStream、ストリームの位置を 0 にリセットしていないため、0 バイトのブロブがアップロードされているということです。

于 2013-06-12T10:27:24.853 に答える