C# でのストリーム チュートリアル: StreamReader と StreamWriter [例]

C#ストリームとは何ですか?

C# のファイル操作では、通常、ファイルの読み取りと書き込みにストリームが使用されます。 ストリームは、アプリケーションとファイルの間に作成される追加のレイヤーです。 ストリームは、ファイルへのスムーズな読み取りおよび書き込み操作を保証するために使用されます。

ストリームは通常、大きなファイルからデータを読み取るときに使用されます。 ストリームを使用すると、大きなファイルのデータが小さなチャンクに分割され、ストリームに送信されます。 これらのデータのチャンクはアプリケーションから読み取ることができます。

ファイルを小さなチャンクに分割する理由は、大きなファイルを一度に読み取ることによるパフォーマンスへの影響のためです。 たとえば 100 MB のファイルからデータを一度に読み取ると、アプリケーションがハングして不安定になる可能性があります。 最善のアプローチは、ストリームを使用してファイルを管理可能なチャンクに分割することです。

したがって、ファイルに対して書き込み操作が実行されると、書き込まれるデータが最初にストリームに書き込まれます。 次に、データはストリームからファイルに書き込まれます。 読み取り操作についても同様です。 読み取り操作では、まずデータがファイルからストリームに転送されます。 次に、データはストリーム経由でアプリケーションから読み取られます。 ストリームを使用して読み取りと書き込みを行う方法の例を見てみましょう。

ストリームリーダー

ストリーム リーダーは、ストリームを使用してファイルからデータを読み取るために使用されます。 ファイルのデータは最初にストリームに読み込まれます。 その後、アプリケーションはストリームからデータを読み取ります。

この例では、D ドライブに Example.txt というファイルがあると仮定します。 ファイルは単純なテキスト ファイルで、以下に示すように 2 行で構成されます。

  • Guru99 – .Net
  • Guru99 -C#

この例では、単純なコンソール アプリケーションを作成し、ファイル ストリームを操作します。

ファイルからデータを読み取るためにストリームを使用する方法の例を見てみましょう。 以下のコードをprogram.csファイルに入力します。

ストリームリーダー

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

コードの説明:-

  1. まず、ストリーム リーダー オブジェクトを宣言します。 ストリーム リーダー オブジェクトは、ファイルからアプリケーションへのストリームを定義するために C# で使用されます。 ファイルからデータが読み取られるたびに、データはファイルからストリームにプッシュされます。 ファイル。OpenText ファイル「Example.txt」を読み取り専用モードで開くために使用されます。 次に、ファイルへのハンドラーがストリーム リーダー オブジェクトに送信されます。
  2. 次に、ファイルからすべてのデータを読み取るために使用される一時変数 's' を定義します。
  3. 次に、ストリーム リーダー メソッド ReadLine を使用して、ストリーム バッファーから各行を読み取ります。 これを実行すると 操作、各行は最初にファイルからバッファに転送されます。 次に、文字列行がバッファから変数 's' に転送されます。 次に、文字列「s」の内容をコンソールに書き込みます。

上記のコードを設定し、プロジェクトを実行すると、 Visual Studioの、以下の出力が得られます。

出力:-

ストリームリーダー

出力から、ストリーム リーダーがファイルから両方の行を読み取ったことがわかります。 最後に、ストリームから読み取られた文字列の行がコンソールに送信されました。

ストリームライター

ストリーム ライターは、ストリームを使用してデータをファイルに書き込むために使用されます。 アプリケーションからのデータは、まずストリームに書き込まれます。 その後、ストリームはデータをファイルに書き込みます。 ストリームを使用してファイルからデータを書き込む方法の例を見てみましょう。 以下のコードをprogram.csファイルに入力します。

ストリームライター

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

コードの説明:-

  1. まず、ストリーム ライター オブジェクトを宣言します。 ストリーム ライター オブジェクトは、C# でストリームを定義するために使用されます。 次に、ストリームを使用して、アプリケーションからファイルにデータを書き込みます。 データを書き込む必要があるたびに、データはアプリケーションからストリームにプッシュされます。 File.AppendText コマンドは、ファイル「Example.txt」を追加モードで開くために使用されます。 次に、ファイルへのハンドラーがストリーム ライター オブジェクトに送信されます。
  2. ストリーム書き込みメソッド Writeline を使用して、「Guru99 – ASP.Net」という行をストリームに書き込みます。 ストリームから、その行がファイルに書き込まれます。
  3. ファイルに書き込んだ後、ストリーム ライターを閉じます。 通常、書き込み目的でファイルが必要なくなったら、ファイル ハンドラーを閉じることをお勧めします。
  4. 最後に、ファイルの内容を再度読み取り、コンソール ログに書き込みます。 これは、その行がファイルに書き込まれたかどうかを確認するためです。

上記のコードを設定し、Visual Studio を使用してプロジェクトを実行すると、次の出力が得られます。

出力:-

ストリームライター

出力から、「Guru99 – ASP.Net」という行がファイルに正常に追加されたことがわかります。 3 行のテキストはすべてコンソールに表示されます。

まとめ

  • ストリームは、アプリケーションとファイルの間の中間レベルとして使用されます。
  • StreamReader は、ファイルからデータを読み取る必要がある場合に常に使用されます。
  • ストリームライターは、データをファイルに書き込む必要がある場合に常に使用されます。