Comparteix a través de


WindowsRuntimeStreamExtensions.AsStreamForWrite Método

Definición

Sobrecargas

AsStreamForWrite(IOutputStream)

Convierte un flujo de salida de Windows Runtime en un flujo administrado de .NET para aplicaciones de Store de Windows 8.x.

AsStreamForWrite(IOutputStream, Int32)

Convierte un flujo de salida de Windows Runtime en un flujo administrado de .NET para aplicaciones de la Tienda Windows utilizando el tamaño de búfer especificado.

AsStreamForWrite(IOutputStream)

Importante

Esta API no es conforme a CLS.

Convierte un flujo de salida de Windows Runtime en un flujo administrado de .NET para aplicaciones de Store de Windows 8.x.

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

Parámetros

windowsRuntimeStream
IOutputStream

Objeto IOutputStream 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 un 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 AsStreamForWrite(IOutputStream, Int32) sobrecarga .

Se aplica a

AsStreamForWrite(IOutputStream, Int32)

Importante

Esta API no es conforme a CLS.

Convierte un flujo de salida de Windows Runtime en un flujo administrado de .NET para aplicaciones de la Tienda Windows utilizando el tamaño de búfer especificado.

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

Parámetros

windowsRuntimeStream
IOutputStream

Objeto IOutputStream 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 un 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 AsStreamForWrite(IOutputStream) 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