「C Sharpの基礎 - ファイル」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
編集の要約なし
55行目: 55行目:
読み込みに掛かる時間や使用するメモリ量について注意が必要である。<br><br>
読み込みに掛かる時間や使用するメモリ量について注意が必要である。<br><br>


== サンプルコード(非同期でバイナリファイルを読み書きする) ==
バイナリファイルへ書き込んだ後、それを読み込むサンプルコードに示す。<br>
この例では、書き込み用に開くときにFileMode.Createを指定しているので上書きになる。(追記する場合 : FileMode.Append)<br>
<source lang="cpp">
async Task BinaryReadWriteAsync(byte[] data)
{
    const string FilePath = @".\sample.dat";  // 読み書きするファイル
    // バイナリファイルへ書き込み
    // ファイルを上書きモードで開く(ファイルが存在しない場合は作成)
    // 追加モードにするにはFileModeをAppendに変える
    using (var fs = new FileStream(FilePath, FileMode.Create, FileAccess.Write))
    {
      await fs.WriteAsync(data, 0, data.Length);  // バイナリデータを非同期で書き込む
    }
    // バイナリファイル読み込み
    byte[] result;  // データを格納する配列
    // ファイルを読み取りモードで開く
    using (var fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))
    {
      result = new byte[fs.Length];  // データ格納用の配列を確保する
      // バイナリデータを非同期で読み込む
      await fs.ReadAsync(result, 0, (int)fs.Length);
    }
    // 読み込んだ内容をコンソールへ出力する
    for (int i=0; i < result.Length; i++)
    {
      Write($"{result[i]:X2} ");
      if (i % 16 == 7)
      {
          Write(" ");
      }
      else if (i % 16 == 15)
      {
          WriteLine();
      }
    }
    WriteLine();
}
</source>
<br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C_Sharp]]
[[カテゴリ:C_Sharp]]
匿名利用者

案内メニュー