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.

例外狀況

indexcount 的總和大於緩衝區長度。The sum of index and count is larger than the buffer length.

之前的讀取作業目前正在使用讀取器。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.

適用於