PHPのftruncate()関数の使い方を解説!ファイルを指定したサイズに切り詰める方法
PHPのftruncate()関数は、開いているファイルを指定した長さに切り詰める(トリミングする)ための関数です。処理が成功した場合はTRUE、失敗した場合はFALSEを返します。
基本的な構文
ftruncate(file_pointer, size)
パラメータ(引数)
file_pointer(ファイルポインタ)− 切り詰め対象のファイルポインタを指定します。このファイルは、切り詰め操作を行うために書き込みモードでオープンされている必要があります。
size(サイズ)− 切り詰め後のファイルサイズをバイト単位で指定します。現在のファイルサイズより小さい値を指定すると、その位置以降のデータが削除されます。
戻り値
ftruncate()関数は、以下のいずれかのブール値を返します。
- 成功した場合:TRUE
- 失敗した場合:FALSE
使用例
次の例では、ファイル「new.txt」のサイズを確認した後、ftruncate()関数を使って50バイトに切り詰めています。
<?php
echo filesize("new.txt");
echo " ";
$file_pointer = fopen("new.txt", "a+");
ftruncate($file_pointer, 50);
// ファイルを閉じる
fclose($file_pointer);
// ファイルステータスキャッシュをクリア
clearstatcache();
// もう一度ファイルサイズを確認
echo filesize("new.txt");
// ファイルを閉じる
fclose($file_pointer);
?>
出力結果
400 50
コードの解説
この例では、最初にfilesize()関数で元のファイルサイズ(400バイト)を出力しています。その後、fopen()で「a+」モード(読み書き可能)によりファイルを開き、ftruncate()関数でファイルを50バイトに切り詰めています。
なお、PHPはパフォーマンス向上のためにファイルサイズなどの情報をキャッシュするため、clearstatcache()を呼び出してキャッシュをクリアしてから再度filesize()を実行しています。これにより、正確な切り詰め後のサイズ(50バイト)を取得できます。
注意点
- file_pointerは書き込み可能なモード(例:「w」「a+」「r+」など)で開く必要があります。読み取り専用モードではFALSEが返されます。
- sizeに現在のファイルサイズより大きい値を指定した場合、動作は環境によって異なり、末尾がヌルバイトで埋められることがあります。
- ファイル操作後は必ず
fclose()でファイルを閉じるようにしましょう。
-
PHPのdelete()関数とは?使い方とサンプルコードをわかりやすく解説
PHPのdelete()関数は、指定したファイルを削除するための関数です。削除したいファイルのパスをパラメータとして渡すことで、そのファイルをシステムから削除できます。 構文(Syntax) delete(file_path) パラメータ(Parameters) file_path: 削除したいファイルのパスを指定します。相対パス・絶対パスのどちらでも指定可能です。 戻り値(Return) delete()関数は、処理結果に応じて以下のブール値を返します。 true: ファイルの削除が成功した場合 false: ファイルの削除に失敗した場合(ファイルが存在しない、権限がないなど) 使用
-
PHPのcopy()関数とは?使い方・パラメータ・実行例をわかりやすく解説
PHPのcopy()関数は、指定したファイルを別の場所へコピーするための組み込み関数です。この関数を実行すると、コピー元(ソース)ファイルをもとに、コピー先(デスティネーション)として新しいファイルが作成されます。なお、コピー先にすでに同名のファイルが存在する場合は、そのファイルは上書きされる点に注意してください。構文(Syntax)copy(source_file, dest_file)パラメータsource_file − コピー元となるファイルを指定します。dest_file − コピー先のファイルパスを指定します。戻り値(Return値)copy()関数は、処理結果に応じて以下のブール値