Język

WindowsRuntimeStorageExtensions.OpenStreamForReadAsync Metoda

Definicja

Przeciążenia

Nazwa Opis
OpenStreamForReadAsync(IStorageFile)

Pobiera strumień do odczytu z określonego pliku.

OpenStreamForReadAsync(IStorageFolder, String)

Pobiera strumień do odczytu z pliku w określonym folderze nadrzędnym.

OpenStreamForReadAsync(IStorageFile)

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Pobiera strumień do odczytu z określonego pliku.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Threading::Tasks::Task<System::IO::Stream ^> ^ OpenStreamForReadAsync(Windows::Storage::IStorageFile ^ windowsRuntimeFile);
[System.CLSCompliant(false)]
public static System.Threading.Tasks.Task<System.IO.Stream> OpenStreamForReadAsync(this Windows.Storage.IStorageFile windowsRuntimeFile);
[<System.CLSCompliant(false)>]
static member OpenStreamForReadAsync : Windows.Storage.IStorageFile -> System.Threading.Tasks.Task<System.IO.Stream>
<Extension()>
Public Function OpenStreamForReadAsync (windowsRuntimeFile As IStorageFile) As Task(Of Stream)

Parametry

windowsRuntimeFile
Windows.Storage.IStorageFile

Obiekt środowisko wykonawcze systemu Windows Windows.Storage.IStorageFile do odczytu.

Zwraca

Zadanie reprezentujące operację odczytu asynchronicznego.

Atrybuty

Wyjątki

Parametr windowsRuntimeFile ma wartość null.

Nie można otworzyć ani pobrać pliku jako strumienia.

Przykłady

W poniższym przykładzie pokazano, jak otworzyć plik jako Stream w aplikacji Windows Store i odczytać jego zawartość przy użyciu wystąpienia klasy StreamReader.

using System;
using System.IO;
using System.Text;
using Windows.Storage.Pickers;
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 Button_Click_1(object sender, RoutedEventArgs e)
        {
            StringBuilder contents = new StringBuilder();
            string nextLine;
            int lineCounter = 1;

            var openPicker = new FileOpenPicker();
            openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
            openPicker.FileTypeFilter.Add(".txt");
            StorageFile selectedFile = await openPicker.PickSingleFileAsync();

            using (StreamReader reader = new StreamReader(await selectedFile.OpenStreamForReadAsync()))
            {
                while ((nextLine = await reader.ReadLineAsync()) != null)
                {
                    contents.AppendFormat("{0}. ", lineCounter);
                    contents.Append(nextLine);
                    contents.AppendLine();
                    lineCounter++;
                    if (lineCounter > 3)
                    {
                        contents.AppendLine("Only first 3 lines shown.");
                        break;
                    }
                }
            }
            DisplayContentsBlock.Text = contents.ToString();
        }
    }
}
Imports System.Text
Imports System.IO
Imports Windows.Storage.Pickers
Imports Windows.Storage

NotInheritable Public Class BlankPage
    Inherits Page

    

    Private Async Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
        Dim contents As StringBuilder = New StringBuilder()
        Dim nextLine As String
        Dim lineCounter As Integer = 1

        Dim openPicker = New FileOpenPicker()
        openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary

        openPicker.FileTypeFilter.Add(".txt")
        Dim selectedFile As StorageFile = Await openPicker.PickSingleFileAsync()

        Using reader As StreamReader = New StreamReader(Await selectedFile.OpenStreamForReadAsync())
            nextLine = Await reader.ReadLineAsync()
            While (nextLine <> Nothing)
                contents.AppendFormat("{0}. ", lineCounter)
                contents.Append(nextLine)
                contents.AppendLine()
                lineCounter = lineCounter + 1
                If (lineCounter > 3) Then
                    contents.AppendLine("Only first 3 lines shown.")
                    Exit While
                End If
                nextLine = Await reader.ReadLineAsync()
            End While
        End Using
        DisplayContentsBlock.Text = contents.ToString()
    End Sub
End Class

W następnym przykładzie pokazano kod XAML skojarzony z poprzednim przykładem.

<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="Display lines from a file."></TextBlock>
        <Button Content="Load File" Click="Button_Click_1"></Button>
        <TextBlock Name="DisplayContentsBlock"></TextBlock>
    </StackPanel>
</Page>

Uwagi

Note

W Visual Basic i C#można wywołać tę metodę jako metodę wystąpienia na dowolnym obiekcie typu <xref:Windows.Storage.IStorageFile>. Jeśli używasz składni metody wystąpienia do wywołania tej metody, pomiń pierwszy parametr. Aby uzyskać więcej informacji, zobacz Extension Methods (Visual Basic) lub Extension Methods (Przewodnik programowania w języku C#).

Dotyczy

OpenStreamForReadAsync(IStorageFolder, String)

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Pobiera strumień do odczytu z pliku w określonym folderze nadrzędnym.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Threading::Tasks::Task<System::IO::Stream ^> ^ OpenStreamForReadAsync(Windows::Storage::IStorageFolder ^ rootDirectory, System::String ^ relativePath);
[System.CLSCompliant(false)]
public static System.Threading.Tasks.Task<System.IO.Stream> OpenStreamForReadAsync(this Windows.Storage.IStorageFolder rootDirectory, string relativePath);
[<System.CLSCompliant(false)>]
static member OpenStreamForReadAsync : Windows.Storage.IStorageFolder * string -> System.Threading.Tasks.Task<System.IO.Stream>
<Extension()>
Public Function OpenStreamForReadAsync (rootDirectory As IStorageFolder, relativePath As String) As Task(Of Stream)

Parametry

rootDirectory
Windows.Storage.IStorageFolder

Obiekt środowisko wykonawcze systemu Windows Windows.Storage.IStorageFile zawierający plik do odczytu.

relativePath
String

Ścieżka względem folderu głównego do pliku do odczytu.

Zwraca

Zadanie reprezentujące operację odczytu asynchronicznego.

Atrybuty

Wyjątki

rootDirectory lub relativePath ma wartość null.

relativePath jest pusty lub zawiera tylko znaki odstępu.

Nie można otworzyć ani pobrać pliku jako strumienia.

Przykłady

W poniższym przykładzie pokazano, jak otworzyć plik jako Stream w aplikacji Windows Store i odczytać jego zawartość przy użyciu wystąpienia klasy StreamReader.

using System;
using System.IO;
using Windows.Storage.Pickers;
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace ExampleApplication
{
    public sealed partial class BlankPage : Page
    {
        public BlankPage()
        {
            this.InitializeComponent();
            CreateTestFile();
        }

        private async void CreateTestFile()
        {
            StorageFile newFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("testfile.txt");
            await FileIO.WriteTextAsync(newFile, "example content in file");
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            using (StreamReader reader = new StreamReader(
                await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("testfile.txt")))
            {
                string contents = await reader.ReadToEndAsync();
                DisplayContentsBlock.Text = contents;
            }
        }
    }
}
Imports System.IO
Imports Windows.Storage

NotInheritable Public Class BlankPage
    Inherits Page

    Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
        CreateTestFile()
    End Sub

    Private Async Sub CreateTestFile()
        Dim newFile As StorageFile = Await ApplicationData.Current.LocalFolder.CreateFileAsync("testfile.txt")
        Await FileIO.WriteTextAsync(newFile, "example content in file")
    End Sub

    Private Async Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
        Using reader As StreamReader = New StreamReader(
                Await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("testfile.txt"))

            Dim contents As String = Await reader.ReadToEndAsync()
            DisplayContentsBlock.Text = contents
        End Using
    End Sub
End Class

W następnym przykładzie pokazano kod XAML skojarzony z poprzednim przykładem.

<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">
        <Button Content="Open File" Click="Button_Click_1"></Button>
        <TextBlock Name="DisplayContentsBlock"></TextBlock>
    </StackPanel>
</Page>

Uwagi

Note

W Visual Basic i C#można wywołać tę metodę jako metodę wystąpienia w dowolnym obiekcie typu IStorageFolder. Jeśli używasz składni metody wystąpienia do wywołania tej metody, pomiń pierwszy parametr. Aby uzyskać więcej informacji, zobacz Extension Methods (Visual Basic) lub Extension Methods (Przewodnik programowania w języku C#).

Dotyczy