ホームページ >php教程 >php手册 >PHP チュートリアル: PHP でのディレクトリ操作とファイル操作

PHP チュートリアル: PHP でのディレクトリ操作とファイル操作

WBOY
WBOYオリジナル
2016-06-21 08:56:352081ブラウズ

1. はじめに

Web プログラミングでは、ファイル操作は常に頭の痛い問題ですが、CMS システムではファイル ディレクトリの生成などの操作が非常に便利です。ここでは、PHP のこれらの関数の詳細な概要を作成し、その使用方法を例を示して説明します。対応する関数の詳細については、PHP マニュアルを参照してください。重要な点と注意が必要な点 (PHP マニュアルには記載されていません)

2. ディレクトリ操作

最初の導入は、ディレクトリから読み取る関数、opendir()、readdir()、closedir() です。使用すると、最初にファイル ハンドルが開かれ、次に反復的にリストされます。

$base_dir = "filelist/";
$fso = opendir($base_dir);
echo $base_dir."
" ;
while($flist=readdir($fso)){
echo $flist."
" ;
}
closedir($fso)
?>
これは、ファイルディレクトリ配下のファイルとディレクトリを返すプログラムです(ファイルが0の場合はfalseを返します)。

ディレクトリ情報が必要な場合は、dirname($path) とbasename($path) を使用して、それぞれパスのディレクトリ部分とファイル名部分を返すことができます。空き容量。

コマンドの作成:

mkdir($path,0777)
、0777 は許可コードであり、非ウィンドウ条件下で umask() 関数を使用して設定できます

rmdir($path)
$path にパスがあるファイルが削除されます。

dir -- directory クラスも、ファイル ディレクトリを操作するための重要なクラスです。これには、read、rewind、close という 3 つのメソッドがあり、最初にオープン ファイル ハンドルを使用し、次に使用します。ポインタをお読みください。ここで PHP マニュアルを参照してください:

$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "n";
echo "Path: " . $d->path . "n";
while (false !== ($entry = $d->read())) {
    echo $entry."n";
}
$d->close();
?>
出力:

テーブル>

ファイル属性には、作成時刻、最終変更時刻、所有者、ファイル グループ、タイプ、サイズなどが含まれます。

ファイル操作に焦点を当てましょう。

3. ファイル操作

A. ファイルを読み取る

まず、ファイルが読み取れるかどうか (権限の問題)、または is_readable 関数を使用して情報を取得できるかどうかを確認します。

ハンドル: リソース ID #2
パス: /etc/php5
.
..
apache
cgi
cli

Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli

$file = 'dirlist.php';
if (is_readable($file) == false) {
die('文件不存在或者无法读取');
} else {
echo '存在';
}
?>

ファイルの存在を確認する関数には file_exists も含まれています (以下に示します) が、これは明らかに is_readable ほど包括的ではありません。ファイルが存在する場合は、

を使用できます。

テーブル>

ただし、file_get_contents 関数は、以前のバージョンではサポートされていません。最初にファイルへのハンドルを作成し、次にポインターを使用してすべてを読み取ることができます。

$file = "filelist.php";
if (file_exists($file) == false) {
die('文件不存在');
}
$data = file_get_contents($file);
echo htmlentities($data);
?>

$file = "filelist.php";
if (file_exists($file) == false) {
die('ファイルが存在しません'); < br/>}
$data = file_get_contents($file);
echo htmlentities($data);
?>
$fso = fopen($cacheFile, 'r');
$data = fread($fso, filesize($cacheFile));
fclose($fso);

バイナリ ファイルを読み取る別の方法もあります:

$data = implode('', file($file));

B. ファイルを書き込む

ファイルの読み取りと同じように、最初に書き込み可能かどうかを確認します:

テーブル>

書き込みできる場合は、file_put_contents 関数を使用して次のように書き込むことができます。

$file = 'dirlist.php';
if (is_writable($file) == false) {
die("我是鸡毛,我不能");
}
?>

$file = 'dirlist.php';
if (is_writable($file) == false) {
die("私は鶏の羽です、私はできません" );
}
?>
$file = 'dirlist.php';
if (is_writable($file) == false) {
die('我是鸡毛,我不能');
}
$data = '我是可鄙,我想要';
file_put_contents ($file, $data);
?>

file_put_contents 関数は php5 で新しく導入された関数です (存在しない場合は、function_exists 関数を使用して最初に確認してください)。以下の方法を使用できます。

$f = fopen($file, 'w');
fwrite($f, $data);
fclose($f);

交換してください。

ファイルを書き込むときに、ファイルをロックしてから次のように書き込む必要がある場合があります。

function cache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,'w')){
$this->warns('无法打开缓存文件.');//trigger_error
return false;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
$this->warns('无法锁定缓存文件.');//trigger_error
return false;
}
if(!fwrite($fso,$pagedata)){//写入字节流,serialize写入其他格式
$this->warns('无法写入缓存文件.');//trigger_error
return false;
}
flock($fso,LOCK_UN);//释放锁定
fclose($fso);
return true;
}

C. ファイルのコピーと削除

PHP でのファイルの削除は、unlink 関数を使用するだけで非常に簡単です。

$file = 'dirlist.php';
$result = @unlink ($file);
if ($result == false) {
echo '蚊子赶走了';
} else {
echo '无法赶走';
}
?>

以上です。

ファイルのコピーも簡単です:

テーブル>

rename() 関数を使用してフォルダーの名前を変更できます。これらの関数を組み合わせて他の操作も実現できます。

D. ファイル属性を取得する

いくつかの一般的な関数について説明します:

最新の変更時刻を取得します:

$file = 'yang.txt';
$newfile = 'ji.txt'; # 这个文件父文件夹必须能写
if (file_exists($file) == false) {
die ('小样没上线,无法复制');
}
$result = copy($file, $newfile);
if ($result == false) {
echo '复制记忆ok';
}
?>

$file = 'yang.txt';
$newfile = 'ji.txt'; # このファイルの親フォルダーは書き込み可能でなければなりません
if (file_exists ( $file) == false) {
die ('デモはオンラインではないためコピーできません')
}
$result = copy($file, $newfile); br/>if ($result == false) {
echo 'コピーメモリOK'
}
?>

返されるタイムスタンプは、キャッシュ テクノロジで一般的に使用される UNIX タイムスタンプです。

最終アクセス時刻を取得するために fileatime() と filectime() が使用される時間も関連しています

$file = 'test.txt';
echo date('r', filemtime($file));
?>

$file = 'test.txt';
echo date('r', filemtime($file));

$owner = posix_getpwuid(fileowner($file));

(非ウィンドウ システム)、ileperms() はファイルのアクセス許可を取得します、

$owner = posix_getpwuid(fileowner($file));

$file = 'dirlist.php';
$perms = substr(sprintf('%o', fileperms($file)), -4);
echo $perms;
?>

テーブル>

$file = 'dirlist.php';
$perms = substr(sprintf('%o', fileperms($file)), -4);
echo $perms;
?>

// 输出类似:somefile.txt: 1024 bytes

$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>

filesize() はファイル サイズをバイト単位で返します:

$file = 'dirlist.php';
$perms = stat($file);
var_dump($perms);
?>
// 出力は同様です: somefile.txt: 1024 バイト $filename = 'somefile.txt';
echo $filename . ' . filesize($filename) '; ?> テーブル> ファイルのすべての情報を取得するには、配列を返す stat() 関数があります。

ここでは展開されませんが、キーが何に対応しているかについての詳細情報を確認できます。

4.結論

上記のいくつかのファイル操作を簡単にまとめました。上記の機能に習熟していれば、操作に大きな問題はありません。PHP のファイル操作の機能は、比較的すぐに変化し、非常に強力になります。ファイルも PHP を学習する上で非常に重要な部分です。無視しないでください。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。