PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでファイルの最終行を読み取る方法

PHPでファイルの最終行を読み取る方法

PHPでテキストファイルの最終行を読み取るには、ファイルポインタを末尾から後方に移動させながら1文字ずつ読み込む方法が効果的です。以下にその実装例を示します。

$line = '';
$f = fopen('data.txt', 'r');
$cursor = -1;
fseek($f, $cursor, SEEK_END);
$char = fgetc($f);
// ファイル末尾の改行文字を取り除く
while ($char === "\n" || $char === "\r") {
    fseek($f, $cursor--, SEEK_END);
    $char = fgetc($f);
}
// 次の行の先頭、または最初の改行文字に到達するまで読み込む
while ($char !== false && $char !== "\n" && $char !== "\r") {
    // 読み取った文字を行の先頭に追加
    $line = $char . $line;
    fseek($f, $cursor--, SEEK_END);
    $char = fgetc($f);
}
echo $line;

このコードを実行すると、テキストファイルの最終行が読み取られ、画面に表示されます。

コードの仕組み

まず、fopen関数でテキストファイルを読み取りモード('r')で開きます。このとき、カーソル(ファイルポインタのオフセット)は-1に設定され、初期状態では何も指していないことを表しています。

次に、fseek関数を使用して、SEEK_ENDを指定することでファイルの末尾(最終行の位置)へ移動します。

最初のwhileループでは、ファイル末尾に余分な改行文字(\n\r)がある場合に、それらを順番にスキップしていきます。

2つ目のwhileループでは、改行文字に到達するか、ファイルの先頭に達するまで1文字ずつ後方へ読み込み、読み取った文字を変数$lineの先頭に連結していきます。これにより、後ろから読みんだ文字が正しい順序で組み立てられます。

最後に、echo文によって組み立てられた最終行が出力されます。

この方法のメリット

この手法では、file()関数などでファイル全体を配列として読み込む必要がないため、特にサイズの大きなファイルでもメモリ消費を抑えながら効率的に最終行だけを取得できるという利点があります。

  1. Androidアプリでassetsフォルダのファイルを読み込む方法【初心者向け解説】

    本記事では、Androidアプリでassets(アセット)フォルダに格納したテキストファイルを読み込み、画面に表示する方法をステップごとに解説します。サンプルコード付きなので、そのままプロジェクトに組み込んで動作を確認できます。アセットファイル読み込みの全体像Androidでは、画像やテキストなどのリソースファイルを assets フォルダに配置することで、アプリ内部から生データとしてアクセスできます。読み込みには AssetManager の open() メソッドを使用し、取得した InputStream をバイト配列として読み取るのが基本の流れです。手順1:新規プロジェクトを作成するAn

  2. Pythonでテキストファイルから1行全体を読み取る方法

    Pythonでテキストファイルから1行を読み込む基本Pythonのread()メソッドは、ファイル全体を一度にすべて読み込みます。そのため、大きなファイルを扱う場合にはメモリを大量に消費する可能性があります。ファイルを1行単位で読み込みたい場合は、readline()メソッドまたはreadlines()メソッドを使用します。たとえば、テキストファイルの最初の行だけを読み取りたい場合は、次のように記述します。f = open(my_file.txt, r+) print(f.readline())readline()を呼び出すと、現在のファイルポインタ位置にある行を1行だけ読み込み、末尾の改行文