WindowsRuntimeStreamExtensions.AsStreamForRead Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.