信息
您所需的主题如下所示。但此主题未包含在此库中。

快速入门:使用 Windows Phone 8 中的文件和文件夹

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

StorageFolder 类用于向本地文件夹内的某个文件读取和写入数据。使用文件时,您也通常会使用 StreamReader 类读取和写入文件的内容。

本主题包括以下部分。

使用 StorageFolder 时通常会使用以下方法:

StorageFolder.CreateFolderAsync

在本地文件夹中创建一个目录。

StorageFolder.CreateFileAsync

异步方法在本地文件夹中创建一个文件。

OpenStreamForReadAsync

检索流以便读取指定文件夹中的文件。

OpenStreamForWriteAsync

检索流以便写入指定文件夹中的文件。

DeleteAsync

删除文件夹。

RenameAsync

重命名文件夹。

下图演示向本地文件夹读取和写入文本数据的示例应用。

Quickstart - Files  & Folders

要创建此 UI,在 MainPage.xaml 文件中,使用以下 XAML 替换名为 ContentPanel网格

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
    <TextBox 
        Name="textBox1" 
        HorizontalAlignment="Left"
        Height="72" 
        Margin="0,22,0,0" 
        TextWrapping="Wrap" 
        Text="Enter text here." 
        VerticalAlignment="Top" Width="456"/>
    <Button 
        Name='btnWrite' 
        Content="Write"
        HorizontalAlignment="Left" 
        Margin="10,94,0,0" 
        VerticalAlignment="Top"
        Width="156" 
        Click="btnWrite_Click"/>
    <TextBlock 
        Name="textBlock1" 
        HorizontalAlignment="Left"
        Margin="10,293,0,0" 
        TextWrapping="Wrap" Text=""
        VerticalAlignment="Top" 
        Height="61" 
        Width="436"/>
    <Button 
        Name="btnRead" 
        Content="Read"
        HorizontalAlignment="Left" 
        Margin="10,374,0,0" 
        VerticalAlignment="Top"
        Width="156" 
        IsEnabled="False"
        Click="btnRead_Click"/>
</Grid>

要使用本快速入门中的代码处理文件和文件夹,将以下指令添加到从 Windows Phone 应用 模板创建的项目。使用语句将这些放置在 MainPage.xaml.cs 文件的顶部。


using System.IO;
using System.Threading.Tasks;
using Windows.Storage;


下面的代码显示如何创建文件夹和写入文本文件。将创建名为 DataFile.txt 的文件和名为 DataFolder 的文件夹(如果它们都不存在)。文件和文件夹是使用 CreateFileAsyncCreateFolderAsync 方法创建的。CreationCollisionOption 枚举用于指定当文件或文件夹已经存在时应该执行的操作。


private async void btnWrite_Click(object sender, RoutedEventArgs e)
{
    await WriteToFile();

    // Update UI.
    this.btnWrite.IsEnabled = false;
    this.btnRead.IsEnabled = true;
}

private async Task WriteToFile()
{
    // Get the text data from the textbox. 
    byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.textBox1.Text.ToCharArray());

    // Get the local folder.
    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

    // Create a new folder name DataFolder.
    var dataFolder = await local.CreateFolderAsync("DataFolder",
        CreationCollisionOption.OpenIfExists);

    // Create a new file named DataFile.txt.
    var file = await dataFolder.CreateFileAsync("DataFile.txt",
    CreationCollisionOption.ReplaceExisting);

    // Write the data from the textbox.
    using (var s = await file.OpenStreamForWriteAsync())
    {
        s.Write(fileBytes, 0, fileBytes.Length);
    }
}


下列代码演示如何读取文本数据。


private async void btnRead_Click(object sender, RoutedEventArgs e)
{
    await ReadFile();

    // Update UI.
    this.btnWrite.IsEnabled = true;
    this.btnRead.IsEnabled = false;
}

private async Task ReadFile()
{
    // Get the local folder.
    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

    if (local != null)
    {
        // Get the DataFolder folder.
        var dataFolder = await local.GetFolderAsync("DataFolder");

        // Get the file.
        var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");

        // Read the data.
        using (StreamReader streamReader = new StreamReader(file))
        {
            this.textBlock1.Text = streamReader.ReadToEnd();
        }

    }
}


显示: