WindowsRuntimeStreamExtensions.AsStreamForRead 方法

定义

重载

AsStreamForRead(IInputStream)

将 Windows 运行时中的输入流转换为适用于 Windows 应用商店应用的 .NET 中的托管流。

AsStreamForRead(IInputStream, Int32)

将 Windows 运行时中的输入流转换为适用于 Windows 8.x 应用商店应用的 .NET 中使用指定缓冲区大小的托管流。

AsStreamForRead(IInputStream)

重要

此 API 不符合 CLS。

将 Windows 运行时中的输入流转换为适用于 Windows 应用商店应用的 .NET 中的托管流。

public:
[System::Runtime::CompilerServices::Extension]
 static System::IO::Stream ^ AsStreamForRead(Windows::Storage::Streams::IInputStream ^ windowsRuntimeStream);
[System.CLSCompliant(false)]
public static System.IO.Stream AsStreamForRead (this Windows.Storage.Streams.IInputStream windowsRuntimeStream);
[<System.CLSCompliant(false)>]
static member AsStreamForRead : Windows.Storage.Streams.IInputStream -> System.IO.Stream
<Extension()>
Public Function AsStreamForRead (windowsRuntimeStream As IInputStream) As Stream

参数

windowsRuntimeStream
IInputStream

要转换的 Windows 运行时 IInputStream 对象。

返回

已转换的流。

属性

例外

windowsRuntimeStreamnull

示例

以下示例演示如何使用 AsStreamForWriteAsStreamForRead 方法将托管流与Windows 运行时中的流进行转换。

using System;
using System.IO;
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace ExampleApplication
{
    public sealed partial class BlankPage : Page
    {
        public BlankPage()
        {
            this.InitializeComponent();
        }

        private async void CreateButton_Click(object sender, RoutedEventArgs e)
        {
            StorageFile newFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("testfile.txt");
            var streamNewFile = await newFile.OpenAsync(FileAccessMode.ReadWrite);

            using (var outputNewFile = streamNewFile.GetOutputStreamAt(0))
            {
                using (StreamWriter writer = new StreamWriter(outputNewFile.AsStreamForWrite()))
                {
                    await writer.WriteLineAsync("content for new file");
                    await writer.WriteLineAsync(UserText.Text);
                }
            }
        }

        private async void VerifyButton_Click(object sender, RoutedEventArgs e)
        {
            StorageFile openedFile = await ApplicationData.Current.LocalFolder.GetFileAsync("testfile.txt");
            var streamOpenedFile = await openedFile.OpenAsync(FileAccessMode.Read);

            using (var inputOpenedFile = streamOpenedFile.GetInputStreamAt(0))
            {
                using (StreamReader reader = new StreamReader(inputOpenedFile.AsStreamForRead()))
                {
                    Results.Text = await reader.ReadToEndAsync();
                }
            }
        }
    }
}
Imports System.IO
Imports Windows.Storage

NotInheritable Public Class BlankPage
    Inherits Page

    Private Async Sub CreateButton_Click(sender As Object, e As RoutedEventArgs)
        Dim newFile As StorageFile = Await ApplicationData.Current.LocalFolder.CreateFileAsync("testfile.txt")
        Dim streamNewFile = Await newFile.OpenAsync(FileAccessMode.ReadWrite)

        Using outputNewFile = streamNewFile.GetOutputStreamAt(0)
            Using writer As StreamWriter = New StreamWriter(outputNewFile.AsStreamForWrite())
                Await writer.WriteLineAsync("content for new file")
                Await writer.WriteLineAsync(UserText.Text)
            End Using
        End Using
    End Sub

    Private Async Sub VerifyButton_Click(sender As Object, e As RoutedEventArgs)
        Dim openedFile As StorageFile = Await ApplicationData.Current.LocalFolder.GetFileAsync("testfile.txt")
        Dim streamOpenedFile = Await openedFile.OpenAsync(FileAccessMode.Read)

        Using inputOpenedFile = streamOpenedFile.GetInputStreamAt(0)

            Using reader As StreamReader = New StreamReader(inputOpenedFile.AsStreamForRead())
                Results.Text = Await reader.ReadToEndAsync()
            End Using
        End Using
    End Sub
End Class

下面是与上一个示例关联的 XAML 代码。

<Page
    x:Class="ExampleApplication.BlankPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:ExampleApplication"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Background="{StaticResource ApplicationPageBackgroundBrush}" VerticalAlignment="Center" HorizontalAlignment="Center">
        <TextBlock Text="Provide text to write to file:"></TextBlock>
        <TextBox Name="UserText" Width="400"></TextBox>
        <Button Name="CreateButton" Content="Create File" Click="CreateButton_Click"></Button>
        <Button Name="VerifyButton" Content="Verify Contents" Click="VerifyButton_Click"></Button>
        <TextBlock Name="Results"></TextBlock>
    </StackPanel>
</Page>

注解

注意

在 Visual Basic 和 C# 中,可以将此方法作为类型 Stream的任何对象的实例方法调用。 当使用实例方法语法调用此方法时,请省略第一个参数。 有关详细信息,请参阅 扩展方法 (Visual Basic) 扩展方法 (C# 编程指南)

转换流时,默认缓冲区大小为 16,384 字节。 若要指定不同的缓冲区大小,请使用 AsStreamForRead(IInputStream, Int32) 重载。

适用于

AsStreamForRead(IInputStream, Int32)

重要

此 API 不符合 CLS。

将 Windows 运行时中的输入流转换为适用于 Windows 8.x 应用商店应用的 .NET 中使用指定缓冲区大小的托管流。

public:
[System::Runtime::CompilerServices::Extension]
 static System::IO::Stream ^ AsStreamForRead(Windows::Storage::Streams::IInputStream ^ windowsRuntimeStream, int bufferSize);
[System.CLSCompliant(false)]
public static System.IO.Stream AsStreamForRead (this Windows.Storage.Streams.IInputStream windowsRuntimeStream, int bufferSize);
[<System.CLSCompliant(false)>]
static member AsStreamForRead : Windows.Storage.Streams.IInputStream * int -> System.IO.Stream
<Extension()>
Public Function AsStreamForRead (windowsRuntimeStream As IInputStream, bufferSize As Integer) As Stream

参数

windowsRuntimeStream
IInputStream

要转换的 Windows 运行时 IInputStream 对象。

bufferSize
Int32

缓冲区的大小(以字节为单位)。 此值不能为负,但是,它可以是(0)禁用缓冲的 0。

返回

已转换的流。

属性

例外

windowsRuntimeStreamnull

bufferSize 为负数。

注解

注意

在 Visual Basic 和 C# 中,可以将此方法作为类型 Stream的任何对象的实例方法调用。 当使用实例方法语法调用此方法时,请省略第一个参数。 有关详细信息,请参阅 扩展方法 (Visual Basic) 扩展方法 (C# 编程指南)

转换流时,使用此方法指定缓冲区大小。 若要使用 16,384 字节的默认缓冲区大小,请使用 AsStreamForRead(IInputStream) 重载。

在大多数情况下,缓冲可以提高流操作的性能。 可以通过将 设置为 bufferSize 零来禁用缓冲,但仅当确定禁用缓冲适合你的情况时,才应执行此操作。

适用于