StreamReader.ReadAsync 메서드

정의

오버로드

ReadAsync(Memory<Char>, CancellationToken)

현재의 스트림에서 메모리 블록으로 문자를 비동기적으로 읽어 들입니다.Asynchronously reads the characters from the current stream into a memory block.

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)

현재의 스트림에서 메모리 블록으로 문자를 비동기적으로 읽어 들입니다.Asynchronously reads the characters from the current stream into a memory block.

public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<char> buffer, System.Threading.CancellationToken cancellationToken = default);
override this.ReadAsync : Memory<char> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overrides Function ReadAsync (buffer As Memory(Of Char), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

매개 변수

buffer
Memory<Char>

이 메서드가 반환될 경우, 현재의 소스에서 읽은 문자로 대체된 문자의 지정된 메모리 블록을 포함합니다.When this method returns, contains the specified memory block of characters replaced by the characters read from the current source.

cancellationToken
CancellationToken

취소 요청을 모니터링할 토큰입니다.The token to monitor for cancellation requests. 기본값은 None입니다.The default value is None.

반환

ValueTask<Int32>

비동기 읽기 작업을 나타내는 값 작업입니다.A value task that represents the asynchronous read operation. 값 작업의 형식 매개 변수의 값이 읽은 문자 수를 포함하고, 스트림의 끝이거나 읽은 데이터가 없으면 0을 포함합니다.The value of the type parameter of the value task contains the number of characters that have been read, or 0 if at the end of the stream and no data was read. 데이터가 스트림 내에서 가용한지에 따라 이 수는 buffer 길이보다 작거나 같을 수 있습니다.The number will be less than or equal to the buffer length, depending on whether the data is available within the stream.

적용 대상

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);
public override System.Threading.Tasks.Task<int> ReadAsync (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>
[<System.Runtime.InteropServices.ComVisible(false)>]
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

쓰기를 시작할 buffer의 위치입니다.The position in buffer at which to begin writing.

count
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.

반환

Task<Int32>

비동기 읽기 작업을 나타내는 작업입니다.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.

특성

예외

buffer이(가) null인 경우buffer is null.

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.

적용 대상