XmlWriter.WriteBase64(Byte[], Int32, Int32) メソッド

定義

派生クラスでオーバーライドされると、指定したバイナリ バイトを Base64 としてエンコードし、結果のテキストを書き出します。

public:
 abstract void WriteBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public abstract void WriteBase64(byte[] buffer, int index, int count);
abstract member WriteBase64 : byte[] * int * int -> unit
Public MustOverride Sub WriteBase64 (buffer As Byte(), index As Integer, count As Integer)

パラメーター

buffer
Byte[]

エンコードするバイト配列。

index
Int32

書き込むバイトの先頭を示すバッファー内の位置。

count
Int32

書き込むバイト数。

例外

buffernullです。

index または count が 0 未満です。

-又は-

バッファーの長さから index を引いた値は、count未満です。

前の非同期操作が完了する前に、 XmlWriter メソッドが呼び出されました。 この場合、"非同期操作は既に進行中です" というメッセージで InvalidOperationException がスローされます。

次の例では、 WriteBase64 メソッドを使用して Base64 データを書き込みます。 Base64 データは、<image>要素内に埋め込まれます。


public static void Base64EncodeImageFile() {

  int bufferSize = 1000;
  byte[] buffer = new byte[bufferSize];
  int readBytes = 0;
    
  using (XmlWriter writer = XmlWriter.Create("output.xml")) {

       FileStream inputFile = new FileStream(@"C:\artFiles\sunset.jpg",
                                                                    FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
       writer.WriteStartDocument();
       writer.WriteStartElement("image");
       BinaryReader br = new BinaryReader(inputFile);
       Console.WriteLine("\r\nWriting Base64 data...");

       do {
          readBytes = br.Read(buffer, 0, bufferSize);
          writer.WriteBase64(buffer, 0, readBytes);
       } while (bufferSize <= readBytes);
       br.Close();
        
    writer.WriteEndElement();// </image>
    writer.WriteEndDocument();
  }
}
Public Shared Sub Base64EncodeImageFile() 
    
    Dim bufferSize As Integer = 1000
    Dim buffer(bufferSize) As Byte
    Dim readBytes As Integer = 0
    
    Using writer As XmlWriter = XmlWriter.Create("output.xml")

            Dim inputFile As New FileStream("C:\artFiles\sunset.jpg", FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read)
            writer.WriteStartDocument()
            writer.WriteStartElement("image")
            Dim br As New BinaryReader(inputFile)
            Console.WriteLine(vbCr + vbLf + "Writing Base64 data...")
            
            Do
                readBytes = br.Read(buffer, 0, bufferSize)
                writer.WriteBase64(buffer, 0, readBytes)
            Loop While bufferSize <= readBytes
            br.Close()
        
        writer.WriteEndElement() ' </image>
        writer.WriteEndDocument()

    End Using
 
End Sub

注釈

たとえば、バイト バッファーには GIF イメージのバイナリ コンテンツが含まれている場合があります。 これは明らかに有効な XML ではありません。 Base64エンコードは、各文字がバイナリ データの 6 ビットをエンコードする 65 個の US-ASCII 文字 ([A-Za-z0-9+/=]) で構成されるテキスト形式で任意のバイト シーケンスを表すように設計されています。 詳細については、コメント要求 Web サイトにあるコメント要求 (RFC) 1521 を参照してください。

このメソッドの非同期バージョンについては、 WriteBase64Asyncを参照してください。

適用対象