WindowsRuntimeStreamExtensions.AsStreamForRead 方法

定义

重载

AsStreamForRead(IInputStream)

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

AsStreamForRead(IInputStream, Int32)

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

AsStreamForRead(IInputStream)

重要

此 API 不符合 CLS。

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

C#
[System.CLSCompliant(false)]
public static System.IO.Stream AsStreamForRead (this Windows.Storage.Streams.IInputStream windowsRuntimeStream);

参数

windowsRuntimeStream
IInputStream

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

返回

已转换的流。

属性

例外

windowsRuntimeStreamnull

示例

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

C#
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();
                }
            }
        }
    }
}

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

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) 重载。

适用于

UWP 10.0
产品 版本
UWP 10.0

AsStreamForRead(IInputStream, Int32)

重要

此 API 不符合 CLS。

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

C#
[System.CLSCompliant(false)]
public static System.IO.Stream AsStreamForRead (this Windows.Storage.Streams.IInputStream windowsRuntimeStream, int bufferSize);

参数

windowsRuntimeStream
IInputStream

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

bufferSize
Int32

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

返回

已转换的流。

属性

例外

windowsRuntimeStreamnull

bufferSize 为负数。

注解

备注

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

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

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

适用于

UWP 10.0
产品 版本
UWP 10.0