BinaryReader.ReadChars(Int32) BinaryReader.ReadChars(Int32) BinaryReader.ReadChars(Int32) BinaryReader.ReadChars(Int32) Method

定義

現在のストリームから指定された文字数を読み取り、そのデータを文字配列として返します。また、使用した Encoding とストリームから読み取った特定の文字に従って現在位置を進めます。Reads the specified number of characters from the current stream, returns the data in a character array, and advances the current position in accordance with the Encoding used and the specific character being read from the stream.

public:
 virtual cli::array <char> ^ ReadChars(int count);
public virtual char[] ReadChars (int count);
abstract member ReadChars : int -> char[]
override this.ReadChars : int -> char[]
Public Overridable Function ReadChars (count As Integer) As Char()

パラメーター

count
Int32 Int32 Int32 Int32

読み取る文字の数。The number of characters to read.

戻り値

Char[]

基になるストリームから読み取ったデータが格納されている文字配列。A character array containing data read from the underlying stream. ストリームの末尾に到達した場合は、要求された文字数より小さくなることがあります。This might be less than the number of characters requested if the end of the stream is reached.

例外

デコードされた文字の数が count を超えています。The number of decoded characters to read is greater than count. これは、Unicode デコーダーがフォールバック文字またはサロゲート ペアを返す場合に発生することがあります。This can happen if a Unicode decoder returns fallback characters or a surrogate pair.

ストリームは閉じられています。The stream is closed.

I/O エラーが発生しました。An I/O error occurred.

次のコード例は、バッキングストアとしてメモリを使用してデータの読み取りと書き込みを行う方法を示しています。The following code example shows how to read and write data using memory as a backing store.

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );
   
   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars );
   
   // Create the reader using the same MemoryStream 
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );
   
   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;
   
   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   Console::WriteLine( binReader->ReadChars( (int)(memStream->Length - memStream->Position) ) );
}

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(Path.InvalidPathChars);

        // Create the reader using the same MemoryStream 
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        Console.WriteLine(binReader.ReadChars(
            (int)(memStream.Length - memStream.Position)));
    }
}
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars)

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Console.WriteLine(binReader.ReadChars( _
            CInt(memStream.Length - memStream.Position)))
    
    End Sub
End Class

注釈

BinaryReader の場合、読み取り操作が失敗した後、ファイルの位置は復元されません。BinaryReader does not restore the file position after an unsuccessful read operation.

場合によっては、ネットワークストリームから読み取るときに、BinaryReader が Unicode エンコーディングを使用して作成されている場合、ReadChars メソッドでストリームから余分な文字が読み込まれることがあります。When reading from network streams, in some rare cases, the ReadChars method might read an extra character from the stream if the BinaryReader was constructed with Unicode encoding. これが発生した場合は、ReadBytes メソッドを使用して固定長のバイト配列を読み取り、その配列を ReadChars メソッドに渡すことができます。If this occurs, you can use the ReadBytes method to read a fixed-length byte array, and then pass that array to the ReadChars method.

適用対象

こちらもご覧ください