語言

WindowsRuntimeStreamExtensions.AsStreamForWrite 方法

定義

多載

名稱 Description
AsStreamForWrite(IOutputStream)

將 Windows 執行階段 中的輸出串流轉換為 .NET 中的管理串流,供 Windows 8.x Store 應用程式使用。

AsStreamForWrite(IOutputStream, Int32)

將 Windows 執行階段 中的輸出串流轉換為 .NET for Windows Store 應用程式中的受管理串流,並使用指定的緩衝區大小。

AsStreamForWrite(IOutputStream)

重要

此 API 不符合 CLS 規範。

將 Windows 執行階段 中的輸出串流轉換為 .NET 中的管理串流,供 Windows 8.x Store 應用程式使用。

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

參數

windowsRuntimeStream
Windows.Storage.Streams.IOutputStream

Windows 執行階段 Windows.Storage.Streams.IOutputStream 物件要轉換。

傳回

轉換後的溪流。

屬性

例外狀況

windowsRuntimeStream 是 null。

範例

以下範例展示了如何使用 AsStreamForWrite 和 AsStreamForRead 方法,將受管理的串流與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>

備註

Note

在 Visual Basic 和 C# 中,你可以將此方法作為實例方法呼叫,適用於任何類型為 Stream 的物件。 當你使用 instance method 語法呼叫這個方法時,請省略第一個參數。 欲了解更多資訊,請參閱 Extension Methods (Visual Basic) 或 Extension Methods (C# 程式設計指南)。

串流轉換時預設的緩衝區大小為 16,384 位元組。 若要指定不同的緩衝區大小,請使用超載。AsStreamForWrite(IOutputStream, Int32)

適用於

AsStreamForWrite(IOutputStream, Int32)

重要

此 API 不符合 CLS 規範。

將 Windows 執行階段 中的輸出串流轉換為 .NET for Windows Store 應用程式中的受管理串流,並使用指定的緩衝區大小。

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

參數

windowsRuntimeStream
Windows.Storage.Streams.IOutputStream

Windows 執行階段 Windows.Storage.Streams.IOutputStream 物件要轉換。

bufferSize
Int32

緩衝區的大小(以位元組為單位)。 此值不能為負值,但可以為 0(0)以禁用緩衝。

傳回

轉換後的溪流。

屬性

例外狀況

windowsRuntimeStream 是 null。

bufferSize 為負數。

備註

Note

在 Visual Basic 和 C# 中,你可以將此方法作為實例方法呼叫,適用於任何類型為 Stream 的物件。 當你使用 instance method 語法呼叫這個方法時,請省略第一個參數。 欲了解更多資訊,請參閱 Extension Methods (Visual Basic) 或 Extension Methods (C# 程式設計指南)。

你用這個方法來指定緩衝區大小,來轉換串流。 要使用預設的緩衝區大小 16,384 位元組,請使用 overload AsStreamForWrite(IOutputStream) 。

在大多數情況下,緩衝能提升串流操作的效能。 你可以把緩衝區設 bufferSize 為零來停用緩衝,但只有在確定關閉緩衝適合你的情況時才應該這麼做。

適用於