Для создания файла применяется метод CreateFileAsync() объекта StorageFolder. Этот метод принимает два параметра:
Название нового файла
Значение из перечисления Windows.Storage.CreationCollisionOption, устанавливающее параметры создания. Данное перечисление может иметь следующие значения:
OpenIfExists: предполагает открытие файла
FailIfExists: генерирует исключение, если файл с таким именем уже существует
GenerateUniqueName: генерирует новый файл с уникальным именем, если заданный файл уже существует
ReplaceExisting: перезаписывает имеющийся файл
К примеру создадим файл "hello.txt" в локальной папке приложения:
using Windows.Storage; //......................... StorageFolder localFolder = ApplicationData.Current.LocalFolder; await localFolder.CreateFileAsync("hello.txt", CreationCollisionOption.ReplaceExisting);
Для записи и чтения файлов применяется класс FileIO. Он имеет ряд методов для управления файлами:
AppendLinesAsync(): добавляет в файл набор строк
AppendTextAsync(): добавляет в файл строку
ReadBufferAsync(): считывает содержимое файла в буфер
ReadLinesAsync(): считывает файл построчно в набор строк
ReadTextAsync(): считывает все содержимое файла в одну строку
WriteBytesAsync(): записывает в файл массив байтов
WriteBufferAsync(): записывает в файл данные из буфера данных
WriteLinesAsync(): записывает в файл набор строк
WriteTextAsync(): записывает в файл одну строку
К примеру, запишем и считаем текстовый файл. Для этого определим страницу с двумя кнопками и текстовым полем:
<Page x:Class="FilesApp.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:FilesApp" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <RelativePanel> <Button x:Name="saveButton" Click="saveButton_Click" Content="Сохранить" RelativePanel.AlignLeftWithPanel="True" Margin="10" /> <Button x:Name="openButton" Click="openButton_Click" Content="Открыть" RelativePanel.AlignRightWithPanel="True" Margin="10" /> </RelativePanel> <TextBox x:Name="myTextBox" Grid.Row="1" Margin="10" /> </Grid> </Page>
В файле кода определим следующее содержимое:
using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.Storage; namespace FilesApp { public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } private async void saveButton_Click(object sender, RoutedEventArgs e) { string text = myTextBox.Text; // получаем локальную папку StorageFolder localFolder = ApplicationData.Current.LocalFolder; // создаем файл hello.txt StorageFile helloFile = await localFolder.CreateFileAsync("hello.txt", CreationCollisionOption.ReplaceExisting); // если файл уже ранее был создан, то мы можем получить его через GetFileAsync() // helloFile = await localFolder.GetFileAsync("hello.txt"); // запись в файл await FileIO.WriteTextAsync(helloFile, text); await new Windows.UI.Popups.MessageDialog("Файл создан и сохранен").ShowAsync(); } private async void openButton_Click(object sender, RoutedEventArgs e) { StorageFolder localFolder = ApplicationData.Current.LocalFolder; // получаем файл StorageFile helloFile = await localFolder.GetFileAsync("hello.txt"); // читаем файл string text = await FileIO.ReadTextAsync(helloFile); myTextBox.Text = text; await new Windows.UI.Popups.MessageDialog("Файл открыт").ShowAsync(); } } }