Revenj.Utility.ChunkedMemoryStream.ToBase64Writer C# (CSharp) Méthode

ToBase64Writer() public méthode

Convert stream to Base 64 String representation in the provided writer.
public ToBase64Writer ( TextWriter sw ) : void
sw System.IO.TextWriter
Résultat void
        public void ToBase64Writer(TextWriter sw)
        {
            if (TotalSize == 0)
                return;
            var tmpBuf = new byte[3];
            var base64 = CharBuffer;
            var total = TotalSize >> BlockShift;
            var remaining = TotalSize & BlockAnd;
            int len = 0;
            var off = 0;
            for (int i = 0; i < total; i++)
            {
                var block = Blocks[i];
                len = Convert.ToBase64CharArray(block, off, BlockSize - 2, base64, 0);
                sw.Write(base64, 0, len);
                for (int j = 0; j < 2 - off; j++)
                    tmpBuf[j] = block[BlockSize - 2 + j + off];
                block = Blocks[i + 1];
                for (int j = 0; j < 1 + off; j++)
                    tmpBuf[2 - off + j] = block[j];
                len = Convert.ToBase64CharArray(tmpBuf, 0, 3, base64, 0);
                sw.Write(base64, 0, len);
                off = (off + 1) & 3;
            }
            len = Convert.ToBase64CharArray(Blocks[total], off, remaining != 0 ? remaining - off : BlockSize, base64, 0);
            sw.Write(base64, 0, len);
            sw.Flush();
        }

Usage Example

Exemple #1
0
 public static void Serialize(Stream value, StreamWriter sw)
 {
     if (value == null)
         sw.Write("null");
     else
     {
         sw.Write('"');
         var cms = value as ChunkedMemoryStream;
         if (cms != null) cms.ToBase64Writer(sw);
         else
         {
             using (cms = new ChunkedMemoryStream(value))
                 cms.ToBase64Writer(sw);
         }
         sw.Write('"');
     }
 }