StreamReader.ReadAsync StreamReader.ReadAsync StreamReader.ReadAsync StreamReader.ReadAsync Method

定義

オーバーロード

ReadAsync(Memory<Char>, CancellationToken) ReadAsync(Memory<Char>, CancellationToken)
ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32)

指定した最大文字数を現在のストリームから非同期的に読み取り、バッファーの指定したインデックス位置にそのデータを書き込みます。Reads a specified maximum number of characters from the current stream asynchronously and writes the data to a buffer, beginning at the specified index.

ReadAsync(Memory<Char>, CancellationToken) ReadAsync(Memory<Char>, CancellationToken)

public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<char> buffer, System.Threading.CancellationToken cancellationToken = null);
override this.ReadAsync : Memory<char> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>

パラメーター

buffer
Memory<Char>

戻り値

ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32) ReadAsync(Char[], Int32, Int32)

指定した最大文字数を現在のストリームから非同期的に読み取り、バッファーの指定したインデックス位置にそのデータを書き込みます。Reads a specified maximum number of characters from the current stream asynchronously and writes the data to a buffer, beginning at the specified index.

public:
 override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <char> ^ buffer, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Threading.Tasks.Task<int> ReadAsync (char[] buffer, int index, int count);
override this.ReadAsync : char[] * int * int -> System.Threading.Tasks.Task<int>
Public Overrides Function ReadAsync (buffer As Char(), index As Integer, count As Integer) As Task(Of Integer)

パラメーター

buffer
Char[]

このメソッドが戻るとき、指定した文字配列の index から (index + count - 1) までの値が、現在のソースから読み取られた文字に置き換えられます。When this method returns, contains the specified character array with the values between index and (index + count - 1) replaced by the characters read from the current source.

index
Int32 Int32 Int32 Int32

書き込みを開始する buffer 内の位置。The position in buffer at which to begin writing.

count
Int32 Int32 Int32 Int32

読み取り対象の最大文字数。The maximum number of characters to read. 指定された文字数をバッファーに書き込む前にストリームの末尾に到達した場合は現在のメソッドが返ります。If the end of the stream is reached before the specified number of characters is written into the buffer, the current method returns.

戻り値

非同期の読み取り操作を表すタスク。A task that represents the asynchronous read operation. TResult パラメーターの値には、バッファーに読み込まれる文字の合計数が含まれます。The value of the TResult parameter contains the total number of characters read into the buffer. 現在使用できる文字数が要求した数より小さい場合、結果の値は要求した文字数より小さくなることがあります。また、ストリームの末尾に到達した場合は 0 になることがあります。The result value can be less than the number of characters requested if the number of characters currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.

例外

index または count が負の値です。index or count is negative.

indexcount の合計が、バッファーの長さよりも大きくなっています。The sum of index and count is larger than the buffer length.

ストリームは破棄されています。The stream has been disposed.

リーダーは、前の読み取り操作によって現在使用されています。The reader is currently in use by a previous read operation.

次の例を使用して、ファイル内のすべての文字を読み取る方法を示しています、ReadAsync(Char[], Int32, Int32)メソッド。The following example shows how to read all the characters in a file by using the ReadAsync(Char[], Int32, Int32) method. インスタンスに文字を追加する前に、文字、数字、または空白文字に各文字かどうかを確認します、StringBuilderクラス。It checks whether each character is a letter, digit, or white space before adding the character to an instance of the StringBuilder class.

using System;
using System.Windows;
using System.IO;
using System.Text;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string filename = @"C:\Example\existingfile.txt";
            char[] result;
            StringBuilder builder = new StringBuilder();

            using (StreamReader reader = File.OpenText(filename))
            {
                result = new char[reader.BaseStream.Length];
                await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length);
            }
           
            foreach (char c in result)
            {
                if (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c))
                {
                    builder.Append(c);
                }
            }
            FileOutput.Text = builder.ToString();
        }
    }
}
Imports System.Text
Imports System.IO

Class MainWindow

    Private Async Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
        Dim filename As String = "C:\Example\existingfile.txt"
        Dim result() As Char
        Dim builder As StringBuilder = New StringBuilder()

        Using reader As StreamReader = File.OpenText(filename)
            ReDim result(reader.BaseStream.Length)
            Await reader.ReadAsync(result, 0, reader.BaseStream.Length)
        End Using

        For Each c As Char In result
            If (Char.IsLetterOrDigit(c) Or Char.IsWhiteSpace(c)) Then
                builder.Append(c)
            End If
            Next
        FileOutput.Text = builder.ToString()
    End Sub
End Class

注釈

タスクの完了後にいずれかで指定された文字の数、countパラメーターが読み取り専用またはストリームの末尾に到達します。The task completes after either the number of characters specified by the count parameter are read or the end of the stream is reached.

適用対象