Introduction

これは次の記事のサンプルコードです。

@IT 2013/06/27  掲載

アプリケーション・データ記憶域のテキスト・ファイルを読み書きするには?[Win 8/WP 8]
アプリ・パッケージに同梱したテキスト・ファイルは、読み取れるけれども(「WinRT/Metro TIPS アプリに同梱したテキスト・ファイルを読むには?[Win 8/WP 8]」を参照)、書き込めない。インストール後に変更を必要としないファイルならよいが、アプリでユーザーが設定するオプションや、アプリの状態などを保存したいときに、ファイルを自由に扱えないのでは困ってしまう。Windowsストア・アプリでは、アプリごとに自由にファイルを扱える場所が用意されている。それが「アプリケーション・データ記憶域」だ。
そこで本稿では、アプリケーション・データ記憶域でファイルを作成/削除/コピーしたり列挙したりする方法、そしてテキスト・ファイルの内容を読み書きする方法を説明する。

以下の解説は記事からの抜粋である。かなり端折ってあるので、ぜひ記事のほうもお読みいただきたい。

※ Window Phone 8 バージョンのコードはこちら ⇒ http://code.msdn.microsoft.com/wpapps/MetroTips-42-Win-8WP-8-6abd76ba

 

Building the Sample

Windows 8 製品版(または評価版) + Visual Studio 2012 製品版(Expressでも可) でビルドしてほしい。
これらを準備するには、第1回のTIPSを参考にしてほしい。本稿では64bit版Win 8 ProとVS 2012 Express for Windows 8を使用している。

 

Description

●ローカル・ストアにファイルを作成するには?

StorageFolderオブジェクトのCreateFileAsyncメソッドを使う。

 

Visual BasicC#
スクリプトの編集|Remove
Private Async Sub createButton_Tapped(sender As Object, e As TappedRoutedEventArgs) 
  Dim folder As Windows.Storage.StorageFolder _ 
      = Windows.Storage.ApplicationData.Current.LocalFolder 
  Dim newFile As Windows.Storage.StorageFile _ 
      = Await folder.CreateFileAsync("test.txt"End Sub
 

 

 

●ローカル・ストアにファイルをコピーするには?

StorageFileオブジェクトのCopyAsyncメソッドを使う。

 

Visual BasicC#
スクリプトの編集|Remove
Private Async Sub copyButton_Tapped(sender As Object, e As TappedRoutedEventArgs) 
  ' アプリ・パッケージ内のtextフォルダを表すStorageFolderオブジェクト 
  Dim textFolder As Windows.Storage.StorageFolder _ 
        = Await Windows.ApplicationModel.Package.Current _ 
                  .InstalledLocation.GetFolderAsync("text") 
 
  ' ローカル・ストア(=コピー先)を表すStorageFolderオブジェクト 
  Dim destFolder As Windows.Storage.StorageFolder _ 
      = Windows.Storage.ApplicationData.Current.LocalFolder 
 
  ' textフォルダ内の全ファイルを列挙し、それぞれをローカル・ストアへコピーする 
  For Each srcFile As Windows.Storage.StorageFile In Await textFolder.GetFilesAsync() 
    Dim copiedFile As Windows.Storage.StorageFile = Nothing 
    Try 
      copiedFile = Await srcFile.CopyAsync(destFolder) 
    Catch 
    End Try 
  Next 
End Sub
 

 

 

●ローカル・ストアのテキスト・ファイルに書き込むには?

 

Visual BasicC#
スクリプトの編集|Remove
Private Async Sub overwriteButton_Tapped(sender As Object, e As TappedRoutedEventArgs) 
  ' 書き込む内容 
  Dim text As String = Me.editTextBox.Text 
 
  ' ユーザーに選択されたファイル 
  Dim selectedFile As Windows.Storage.StorageFile _ 
    = DirectCast(Me.fileNameList.SelectedItem, Windows.Storage.StorageFile) 
  If (selectedFile Is NothingThen 
    Return 
  End If 
 
  ' StorageFileオブジェクトからファイルを開いて書き込む 
  Using st As Stream = (Await _ 
    selectedFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)).AsStream(), 
        writer As TextWriter = New StreamWriter(st) 
 
    Await writer.WriteAsync(text) 
  End Using 
End Sub
 

 

 

 

Source Code Files

 

More Information

著作権について

このソースコードは MS-LPL ライセンスで提供しておりますので、 ご自由に利用いただけます。
ただし、@ITの記事(ここへ転載・引用した部分も含む)そのものの著作権は、筆者とデジタルアドバンテージが保有しており、サンプルコード部分を除く記事の無断使用は固くお断りいたします。