Чтение и запись файлов

Последнее обновление: 24.02.2016

Создание файла

Для создания файла применяется метод 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();
        }
    }
}
Сохранение и чтение текстовых файлов в UWP
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850