Windows apps
Collapse the table of content
Expand the table of content

WindowsRuntimeStorageExtensions.OpenStreamForWriteAsync Method (IStorageFolder, String, CreationCollisionOption)

.NET Framework (current version)

Retrieves a stream for writing to a file in the specified parent folder.

This API is not CLS-compliant. 

Namespace:  System.IO
Assembly:  System.Runtime.WindowsRuntime (in System.Runtime.WindowsRuntime.dll)

public static Task<Stream> OpenStreamForWriteAsync(
	this IStorageFolder rootDirectory,
	string relativePath,
	CreationCollisionOption creationCollisionOption


Type: IStorageFolder

The Windows Runtime IStorageFolder object that contains the file to write to.

Type: System.String

The path, relative to the root folder, to the file to write to.

Type: CreationCollisionOption

The Windows Runtime CreationCollisionOption enumeration value that specifies the behavior to use when the name of the file to create is the same as the name of an existing file.

Return Value

Type: System.Threading.Tasks.Task<Stream>
A task that represents the asynchronous write operation.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IStorageFolder. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).


rootDirectory or relativePath is null.


relativePath is empty or contains only white-space characters.


The file could not be opened or retrieved as a stream.

The following example shows how to open a file in the application data as a Stream in a Windows Store app, and write to it by using an instance of the StreamWriter class.

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

        private async void CreateButton_Click(object sender, RoutedEventArgs e)
            using (StreamWriter writer = 
                new StreamWriter(await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(
                "testfile.txt",  CreationCollisionOption.OpenIfExists)))
                await writer.WriteLineAsync("new entry");
                await writer.WriteLineAsync(UserText.Text);

        private async void VerifyButton_Click(object sender, RoutedEventArgs e)
            StorageFile openedFile = await ApplicationData.Current.LocalFolder.GetFileAsync("testfile.txt");
            using (StreamReader reader = new StreamReader(await openedFile.OpenStreamForReadAsync()))
                Results.Text = await reader.ReadToEndAsync();

The next example shows the XAML code that is associated with the previous example.


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

.NET Framework

Supported in: 4.6, 4.5

.NET for Windows Phone apps

Supported in: Windows Phone Silverlight 8
© 2017 Microsoft