Compartir vía


WindowsRuntimeStreamExtensions.AsStreamForRead Método

Definición

Sobrecargas

AsStreamForRead(IInputStream)

Convierte un flujo de entrada de Windows Runtime en un flujo administrado de .NET para aplicaciones de Microsoft Store.

AsStreamForRead(IInputStream, Int32)

Convierte un flujo de entrada de Windows Runtime en un flujo administrado de .NET para aplicaciones de Store de Windows 8.x utilizando el tamaño de búfer especificado.

AsStreamForRead(IInputStream)

Importante

Esta API no es conforme a CLS.

Convierte un flujo de entrada de Windows Runtime en un flujo administrado de .NET para aplicaciones de Microsoft Store.

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

Parámetros

windowsRuntimeStream
IInputStream

Objeto IInputStream de Windows Runtime que se va a convertir.

Devoluciones

Secuencia convertida.

Atributos

Excepciones

windowsRuntimeStream es null.

Ejemplos

En el ejemplo siguiente se muestra cómo usar los AsStreamForWrite métodos y AsStreamForRead para convertir una secuencia administrada en y desde una secuencia en el Windows Runtime.

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

Este es el código XAML asociado al ejemplo anterior.

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

Comentarios

Nota

En Visual Basic y C#, puede llamar a este método como método de instancia en cualquier objeto de tipo Stream. Cuando emplee la sintaxis del método de instancia para llamar a este método, omita el primer parámetro. Para obtener más información, vea Métodos de extensión (Visual Basic) o Métodos de extensión (Guía de programación de C#).

Se usa un tamaño de búfer predeterminado de 16 384 bytes al convertir la secuencia. Para especificar un tamaño de búfer diferente, use la AsStreamForRead(IInputStream, Int32) sobrecarga.

Se aplica a

AsStreamForRead(IInputStream, Int32)

Importante

Esta API no es conforme a CLS.

Convierte un flujo de entrada de Windows Runtime en un flujo administrado de .NET para aplicaciones de Store de Windows 8.x utilizando el tamaño de búfer especificado.

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

Parámetros

windowsRuntimeStream
IInputStream

Objeto IInputStream de Windows Runtime que se va a convertir.

bufferSize
Int32

Tamaño del búfer en bytes. Este valor no puede ser negativo, pero puede ser 0 (cero) para deshabilitar el almacenamiento en búfer.

Devoluciones

Secuencia convertida.

Atributos

Excepciones

windowsRuntimeStream es null.

bufferSize es negativo.

Comentarios

Nota

En Visual Basic y C#, puede llamar a este método como método de instancia en cualquier objeto de tipo Stream. Cuando emplee la sintaxis del método de instancia para llamar a este método, omita el primer parámetro. Para obtener más información, vea Métodos de extensión (Visual Basic) o Métodos de extensión (Guía de programación de C#).

Este método se usa para especificar un tamaño de búfer al convertir la secuencia. Para usar el tamaño de búfer predeterminado de 16 384 bytes, use la AsStreamForRead(IInputStream) sobrecarga.

En la mayoría de las situaciones, el almacenamiento en búfer mejora el rendimiento de las operaciones de flujo. Puede deshabilitar el almacenamiento en búfer estableciendo bufferSize en cero, pero solo debe hacerlo cuando esté seguro de que deshabilitar el almacenamiento en búfer es adecuado para su situación.

Se aplica a