Text Local

Local Folder に Text File を保存/入力する方法を説明します。

前田稔の超初心者のプログラム入門

プロジェクトの説明

  1. このプロジェクトは Windows10 & Visual Studio Professional 2019 16.2.3 の環境で開発します。
    Local Folder は、アプリでファイルの書き込みと読み取りが出来るのですが、アプリ毎に独立していて他のアプリが保存したファイルにはアクセスすることが出来ません。
    アプリをインストールすると Local Folder が作成され、アンインストールすると完全に削除されます。
    Local Folder は「C:\Users\<ユーザ名>\AppData\Local\Packages\<アプリID>\LocalState\」になります。
    今回は下記フォルダーに "test.txt" が utf-8(BOM 無し) で書き込まれていました。
    C:\Users\maeda\AppData\Local\Packages\402461cb-8649-4186-9f6d-7468c43c6442_m3b2cat7fbs4m\LocalState\
    
  2. Visual Studio で新規プロジェクトから[空白アプリ(ユニバーサル Windows)]を生成します。
    デザイン画面を表示すると次のメッセージが表示されました。
    Visual Studio でこのコンテンツを表示するには、新しいバージョンの Windows が必要です。
    Windows 10, version 1903(10.0.18362.0) 以降に更新してください。
    
  3. 当面は MainPage.xaml のソースコードを直接編集します。
    ページ先頭の画像のように、ボタンを2個と TextBox を貼り付けます。
        <Grid>
            <Button x:Name="button" Content="Write" Margin="40,40,0,0"
                VerticalAlignment="Top" Click="Button1_Click"/>
            <Button x:Name="button1" Content="Read" Margin="160,40,0,0"
                VerticalAlignment="Top" Click="Button2_Click"/>
            <TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="70,100,0,0" Text="TextBox"
                VerticalAlignment="Top" Width="200"/>
        </Grid>
    
  4. MainPage.xaml.cs のソースコードを修正してボタンクリックのメソッドを作成します。
    Write ボタンのクリックで、現在時刻を格納した "test.txt" を書き出します。
    StorageFolder を使うので using Windows.Storage; を追加して下さい。
    書き出しに成功すれば "Write test.txt" が、失敗すれば "FileNotFound Exception" が TextBox に印字されます。
    using Windows.Storage;  // StorageFolder
    
        private async void Button1_Click(object sender, RoutedEventArgs e)
        {
            string str = DateTime.Now.ToString();
            StorageFile file = null;
            try
            {
                StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
                file = await storageFolder.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting);
                await FileIO.WriteTextAsync(file, str);
                textBox.Text = "Write test.txt";
            }
            catch (FileNotFoundException)
            {
                textBox.Text = "FileNotFound Exception";
            }
        }
    
  5. Read ボタンのクリックで "test.txt" を入力して記録されている時刻を TextBox に印字します。
    入力に成功すれば "test.txt" に書かれている時刻が、失敗すれば "FileNotFound Exception" が TextBox に印字されます。
        private async void Button2_Click(object sender, RoutedEventArgs e)
        {
            StorageFile file = null;
            try
            {
                StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
                file = await storageFolder.GetFileAsync("test.txt");
                if (file != null)
                {   string str = await FileIO.ReadTextAsync(file);
                    textBox.Text = str;
                }
            }
            catch (FileNotFoundException)
            {
                textBox.Text = "FileNotFound Exception";
            }
        }        
    
  6. 右三角アイコンをクリック(または F5 キーで)プログラムを実行して下さい。
    Write ボタンをクリックすると "test.txt" に現在時刻が記録されます。
    Read ボタンをクリックすると "test.txt" に記録されている時刻が印字されます。
    プログラムを実行すると自動的に「スタート」メニューに登録されます。
    必要が無くなれば、右クリックからアンインストールして下さい。
    アンインストールすると Local Folder は削除されます。
    同様のプログラムを StoreC の Local Folder でも作成しています。

超初心者のプログラム入門(C# Frame Work)