Windowsストア アプリ開発 Tips集010 ~プロジェクト内のテキストファイルを使用する~

マイクロソフトの田中達彦です。
本連載では、C#/XAML でWindowsストアアプリを開発するときにヒントを紹介します。

[プロジェクト内のテキストファイルを使用する]
テキストデータをアプリ内で使いたいとき、あらかじめプロジェクトファイルにテキストファイルを追加しておき、そのファイルをプログラムで読み込むことができます。
まずは読み込みたいテキストファイルを、下図のようにプロジェクトに追加しておきます。
ここでは、text.txtというファイルを追加しています。

ファイルを追加するには、Visual Studioのソリューションエクスプローラーのプロジェクト名が表示されている場所の上で右クリックし、[追加]-[既存の項目]を選んで追加するファイルを選択するか、エクスプローラーに表示されているファイルをソリューションエクスプローラー上にドラッグアンドドロップします。

以下のメソッドは、そのtext.txtファイルをtextというstring型のフィールドに読み込むコードです。

public async void LoadText()
{
    StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync("text.txt");

    string text = await FileIO.ReadTextAsync(file, Windows.Storage.Streams.UnicodeEncoding.Utf8);

C#のソースの最初のusing節が並んでいるところには、以下の一文を追加しておきます。

using Windows.Storage;

プロジェクトに追加したファイルは、アプリがインストールされたときにアプリ本体と同じフォルダーにインストールされます。
アプリがインストールされたフォルダーは、
Windows.ApplicationModel.Package.Current.InstalledLocation
で取得できます。

ファイルにアクセスして読み込むためのGetFileAsyncメソッドやReadTextAsyncメソッドは非同期のメソッドのため、これらを使用しているLoadTextメソッド自体もasyncキーワードをつけて非同期のメソッドとして定義します。

ここでの注意事項は、テキストファイルの文字のエンコードです。
FileIO.ReadTextAsyncを使用してテキストファイルを読み込むときに、UTF-8を指定していますので、テキストファイルもUTF-8で保存します。
メモ帳を使っている場合は、メニューの[ファイル]-[名前を付けて保存]を選択し、ダイアログの下のほうにある[文字コード]の部分をUTF-8に変更して保存します。

このように、テキストファイルの文字のエンコードと読み込むときのエンコードを一致させておきます。

[関連記事]
FileIO.ReadTextAsync | readTextAsync Methods
https://msdn.microsoft.com/ja-jp/library/windows/apps/hh701482.aspx

[前後の記事]
009 ~共有チャームで文字列を共有する~
011 ~コントロールの明るさを一発で変える~

[Tips集まとめページ]
https://blogs.msdn.com/b/ttanaka/archive/2013/03/05/windows-tips.aspx

マイクロソフト
田中達彦