ファイルのコピーや削除など

 

ファイルをコピー(上書き)する

ファイルをコピーするには copy()関数を使います。コピー先に既存ファイルがあるときには上書きされます。

《サンプルプログラム-1》

<?php
//元のファイル
$file = 'sample.txt';

//コピー先ファイル
$newfile = 'sample_bak.txt';

//ファイルをコピーしてメッセージを表示
if (copy($file, $newfile)) {
  echo "$file を $newfile にコピーしました";
}
else {
  echo "コピーが失敗しました";
}
?>

 

上書きするかを指定してコピーする 

《サンプルプログラム−2》

<?php
//上書きコピーを指定する関数 fcopy
function fcopy($from,$to,$overwrite) {
if(!file_exists($from)){
return FALSE;
}

if(!$overwrite) {
if (file_exists($to)){
return FALSE;
}
}

if (copy($from,$to)) {
return TRUE;
}
else {
return FALSE;
}
}

//コピー元ファイル
$oldfile= "sample.txt";

//コピー先ファイル
$newfile = "sample_bak.txt";

//既存ファイルを上書きコピーする
if (fcopy($oldfile,$newfile,TRUE)){
echo "<p>$oldfile を $newfile に上書きコピーしました。";
}
else {
echo "<p>$oldfile を $newfile にコピー失敗しました";
}

//既存ファイルがあればを上書きしない
if (fcopy($oldfile,$newfile,FALSE)){
echo "<p>$oldfile を $newfile にコピーしました:";
}
else {
echo "<p>$newfile はすでに存在します。コピーはしません。";
}
?>

CSVファイルのデータを表示 

fgetcsv()関数を使うと、CSV形式のファイルを1行ずつ読み込んで配列にデータをセットします。引数には、ファイル名1行の最大文字数、項目区切り文字を指定します。

《サンプル》
次のサンプルはfgetcsv() を使ってCSV ファイルの内容全体を読み込み、出力します。

<?php
//ファイル名
$file_name = "word.csv";

//ファイルを読み取りモードで開く
$file = fopen($file_name, "r") or die("OPENエラー $file_name");

//ファイルのデータを配列に入れる

while ($array = fgetcsv($file, 1000,",")) {
echo "<hr>";
for ($i = 0; $i < count($array); $i++){
echo $array[$i]."<br>";
}
}

//ロック解除
flock($file,LOCK_UN);
//ファイルを閉じる
fclose($file);
?>

《サンプル》
次のサンプルは、list()関数を使って、項目ごとに配列にセットしています。

<?php
//ファイル名
$file_name = "word.csv";

//ファイルを読み取りモードで開く
$file = fopen($file_name, "r") or die("OPENエラー $file_name");

$count = 1;

//ファイルのデータを読み込んで配列に入れる
while (!feof($file)){
list($jap[$count],$eng[$count]) = fgetcsv($file, 1000,",");
$count = $count + 1;
}

//配列のデータを表示する
for ($n = 1; $n<=$count - 1;$n++) {
echo $n.":".$jap[$n].":".$eng[$n]."<br>";
}

//ロック解除
flock($file,LOCK_UN);
//ファイルを閉じる
fclose($file);
?>

ファイル名を変更する 

ファイル名を変更するには、rename()関数を使います。変更先に同じファイル名がある場合は、エラーとなります。

《サンプル》

<?php
//ファイル名を変更する関数 rename()<br>

$fname_from ="test.txt"; //変更元ファイ名
$fname_to ="test_rename.txt"; //変更先ファイル名

if (rename($fname_from, $fname_to)) {
echo "$fname_from を $fname_to に変更しました:";
}
else{
echo "$fname_from から $fname_to への変更が失敗しました:";
}
?>

ファイルを削除する 

ファイルを削除するには unlink()関数を使います。削除対象ファイルが存在しない場合はエラーになります。

《サンプル》

<?php
//ファイル名を削除する関数 unlink()<br>

$fname_del ="test.txt";

if (unlink($fname_del)) {
echo "$fname_del を 削除しました:";
}
else{
echo "$fname_delの削除が失敗しました:";
}
?>