C#でテキストファイルの行数をカウントする方法
C#でファイルの行数を数えるには、File.ReadAllLines()メソッドとLengthプロパティを組み合わせるのが最もシンプルな方法です。この記事では、StreamWriterでファイルを作成するところから、行数を取得して表示するまでの一連の手順を解説します。
手順1:StreamWriterクラスでファイルを作成して書き込む
まず、StreamWriterクラスを使って「hello.txt」というファイルを作成し、サンプルとなるテキストを書き込みます。usingステートメントで囲むことで、処理終了後にリソースが自動的に解放されます。
using (StreamWriter sw = new StreamWriter("hello.txt")) {
sw.WriteLine("This is demo line 1");
sw.WriteLine("This is demo line 2");
sw.WriteLine("This is demo line 3");
}
手順2:ReadAllLines()メソッドで全行を読み込み、Lengthで行数を取得する
次に、File.ReadAllLines()メソッドを使ってファイルのすべての行を読み込みます。このメソッドは各行を要素とする文字列配列(string[])を返すため、Lengthプロパティを参照するだけで行数が簡単に取得できます。
int count = File.ReadAllLines("hello.txt").Length;
完全なコード例
上記の手順をまとめた完全なコードは以下の通りです。
using System;
using System.Collections.Generic;
using System.IO;
public class Program {
public static void Main() {
using (StreamWriter sw = new StreamWriter("hello.txt")) {
sw.WriteLine("This is demo line 1");
sw.WriteLine("This is demo line 2");
sw.WriteLine("This is demo line 3");
}
int count = File.ReadAllLines("hello.txt").Length;
Console.WriteLine("Number of lines: "+count);
}
}
実行結果
Number of lines: 3
補足:大きなファイルを扱う場合の注意点
ReadAllLines()はファイル全体を一度にメモリへ読み込むため、サイズが非常に大きいファイルではメモリ消費が課題になることがあります。そのようなケースでは、行を遅延評価で読み込むFile.ReadLines()と、LINQのCount()メソッドを組み合わせる方法も有効です。
// using System.Linq; の追加が必要
int count = File.ReadLines("hello.txt").Count();
用途やファイルサイズに応じて、これらの方法を使い分けるとよいでしょう。
-
Javaでカウンタープログラムを実装する方法をわかりやすく解説
この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*
-
Pythonで行列内の「完全に囲まれた島」の数を数える方法を解説
問題の概要0と1のみで構成された2次元のバイナリ行列を考えます。ここで「1」は陸地、「0」は水を表します。島とは、隣り合った1の集まりであり、その周囲がすべて水で囲まれている領域のことです。本記事では、行列の中から端(境界)に一切接しておらず、完全に水で囲まれた島の数を数えるプログラムをPythonで実装する方法を解説します。例として、次のような入力が与えられた場合を考えてみましょう。この場合の出力は 2 となります。島は全部で3つ存在しますが、そのうち2つだけが完全に水で囲まれているためです。解法のアプローチ:DFS(深さ優先探索)この問題は、DFS(深さ優先探索)を用いることで効率的に解く