【php】目录操作 文件操作
2016-07-18 17:51
471 查看
[php] view
plain copy
print?
php的目录处理函数主要包括如下几个:
①mkdir():创建目录
②is_dir():判断给定文件名是否是一个目录
③rmdir():删除目录
④basename():返回路径中的文件
⑤dirname():返回路径中的目录
(1)mkdir() 函数用于创建一个目录,成功返回 true,否则返回 false
语法:
bool mkdir( string dirname [, int mode ] )
注意:
可选参数 mode 表示创建该目录时给定的权限,默认是最大权限 0777
案例:
<?php
$dirname = 'testdir';
if (mkdir($dirname, 0700)) {
echo "目录 $dirname 创建成功";
} else {
echo "目录 $dirname 创建失败";
}
?>
(2)is_dir() 函数用于检查给定文件名是否是一个目录,成功返回 true,否则返回 false
语法:
bool is_dir( string filename )
案例:
<?php
var_dump(is_dir( 'images' )); //输出:bool(true)
?>
(3)rmdir() 函数用于删除一个目录,成功返回 true,否则返回 false
语法:
bool rmdir( string dirname )
案例:
<?php
$dirname = 'testdir';
if (rmdir( $dirname )) {
echo "目录 $dirname 删除成功";
} else {
echo "目录 $dirname 删除失败";
}
?>
(4)basename() 函数用于返回一个包含全路径的字符串中的基本文件名,成功返回字符串,否则返回 false
语法:
string basename( string path [, string suffix] )
注意:
可选参数 suffix 表示文件后缀,如果文件名后缀是 suffix ,那这一部分也会被去掉
案例: 假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php
<?php
echo $PHP_SELF; //输出:/html/test.php
echo basename( $PHP_SELF ); //输出:test.php
echo basename( $PHP_SELF, '.php'); //输出:test
?>
(5)dirname() 函数用于返回一个包含全路径的字符串中去掉文件名的目录,成功返回字符串,否则返回 false。
语法:
string dirname( string path )
案例:
假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php
<?php
echo $PHP_SELF; //输出 /html/test.php
echo dirname( $PHP_SELF ); //输出 /html
?>
[php] view
plain copy
print?
php提供了丰富的文件处理函数
文件处理主要包括:
①文件的创建/打开
②文件的写入
③文件读取
④检查文件是否存在
⑤文件的拷贝与删除
⑥获取文件的大小、类型及修改时间
fopen()函数的使用:
fopen()函数主要用来打开一个文件或url地址
语法:
resource fopen(string filename,mode);
①参数filename:尝试打开或创建的文件名
②参数mode:打开模式
注意:
1.php中没有单独的文件创建函数,创建或打开文件都是使用fopen()函数
2.当使用fopen()函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源;如果打开失败,返回false
案例1,使用fopen()函数创建一个文件:
<?php
if(!file_exists("test.txt")){//如果文件不存在(当前目录下)
$fh=fopen("test.txt","w");//以只写模式创建一个test.txt文件
fclose($fh);//关闭文件
}
?>
案例2,使用fopen()函数打开url地址
<?php
$fh=fopen("http://www.baidu.com","r");
if($fh){
while(!feof($fh)){
echo fgets($fh);
}
}
?>
注意:fopen()返回的只是一个资源,要想显示打开的页面地址,还需要使用fgets()函数读取,并使用echo输出
fwrite()函数的使用:
fwrite()函数主要用来向文件写入字符串,如果写入成功,则返回写入的字符数,否则返回false
格式:
int fwrite(resource handle,string data,int length)
注意:fwrite()函数将data的内容写入文件指针handle处
注意:如果指定了可选参数length,当写入了length个字节或者写完了data以后,写入就会停止
案例1,写入文件:
<?php
$filename="file.txt";//要写入的文件名称
$content="你好!";//要写入的内容
$fh=fopen($filename,"w");//打开文件
$num=fwrite($fh,$content);//将内容写入文件中,返回写入的字符数
//$num=fwrite($fh,$content,4);//只能将四个字符写入到file.txt文件中
echo $num;//输出结果为:6
fclose($fh);//关闭文件
?>
案例2,追加写入:
<?php
$filename="file.txt";
$content="你好!";
$fh=fopen($filename,"a");
echo fwrite($fh,$content);
fclose($fh);//关闭文件
?>
file_put_contents()函数的使用:
file_put_content():此函数主要用于一次性将字符串写入文件或追加字符串到文件,如果成功,返回写入到文件的字符数,失败的话返回false
语法:
int file_put_content(string filename,string data,int flags,resource context);
案例1,写入文件:
<?php
echo file_put_contents("file.txt","你好");//浏览器输出结果为:4
?>
注意:
1.如果文件不存在,则创建文件,相当于fopen()函数行为
2.如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免
案例2,追加写入:
<?php
file_put_contents("file.txt","你好",FILE_APPEND);//追加内容到文件尾部
?>
文件的读取函数:
文件的读取函数主要有如下几种:
①fread():从文件中读取数据
②fgets():从文件中读取一行数据,并将文件指针指向下一行
③fgetc():逐字读取文件数据,直到文件结束
④file():把整个文件内容读取到一个数组中,数组中的每个元素都是文件中对应的一行
⑤file_get_contents():将整个文件内容读入到一个字符串
fread():此函数用于读取文件
语法:
string fread(int handle,int length);
注意:
fread()函数从文件指针handle读取最多length个字节。当遇到下列情况时,会停止读取文件
①在读取完最多length个字节数时
②达到文件末尾的时候(eof)
案例:从文件中读取10个字节
<?php
$filename = "test.txt";
$fh = fopen($filename, "r");
echo fread($fh, "10");
fclose($fh);
?>
fgets():此函数主要用来从文件中读取一行数据,并将文件指针指向下一行
语法:
string fgets(int handle,int length)
注意:
①fgets() 从 handle 指向的文件中读取一行并返回长度最多为 length-1 字节的字符串
②碰到换行符(包括在返回值中)、EOF 或者已经读取了 length-1 字节后停止
③如果没有指定 length ,则默认为 1K ,或者说 1024 字节
案例:
<?php
$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
// if条件避免无效指针
if($fh){
while(!feof($fh)) {
echo fgets($fh), '<br />';
}
}
fclose($fh);
?>
feof() 函数测试文件指针是否到了文件结束的位置,该文件指针必须有效,如果是无效的资源,则会陷入无限循环中
fgetc():此函数主要用于逐字读取文件数据,直到文件结束
语法:
string fgetc(resource handle);
案例:从文件中读取10个字节
<?php
$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
if($fh){
while(!feof($fh)) {
echo fgetc($fh);
}
}
fclose($fh);
?>
file():此函数主要用于把整个文件读取到一个数组中,数组中的每个单元都是文件中相应的一行,成功,返回一个数组;失败返回false
语法:
array file(string filename);
案例:从文件中读取10个字节
<?php
$lines = file('test.txt');
// 在数组中循环并加上行号
foreach ($lines as $line_num => $line) {
echo "Line #{$line_num} : ",$line,'<br />';
}
?>
test.txt 文件内容:
你好!
这是第二行文字。
浏览器显示:
Line #0 : 你好!
Line #1 : 这是第二行文字。
file_get_contents():此函数主要用于将整个文件读入到一个字符串,成功,则返回一个字符串;失败则返回false
语法:
string file_get_contents(string filename,int offset,int maxlen);
案例:
<?php
// 读取时同事将换行符转换成 <br />
echo nl2br(file_get_contents('test.txt'));
?>
file_exists():此函数主要用来检查一个文件或目录是否存在
语法:
bool file_exists(string filename);
案例:
<?php
$filename = 'test.txt';
if (file_exists($filename)) {
echo "文件 $filename 存在";
} else {
echo "文件 $filename 不存在";
}
?>
copy():此函数主要用来拷贝文件
成功返回true,失败返回false
语法:
bool copy(string file,string newfile);
案例:
<?php
if (copy('test.txt', 'test.txt.bak')) {
echo "文件拷贝成功";
} else {
echo "文件拷贝失败";
}
?>
unlink():此函数主要用来删除文件
成功返回true,失败返回false
语法:
bool unlink(string filename);
案例:
<?php
unlink("test.txt");
?>
获取文件信息的函数主要有如下几种:
①filesize():取得文件大小,成功则返回文件大小的字节数,失败返回false
②filetype():取得文件的类型,成功则返回文件的类型,可能的值有file、dir、char、block、link等
③filemtime():取得文件的修改时间,成功则返回文件上次被修改的时间戳
问题?
如何锁定文件:在向一个文本文件中写入数据时,需要先锁定文件,以防其它用户同时也修改此文件内容,如何锁定文件呢?
php中通过flock()函数实现文件锁定,语法如下:
bool flock(int handle,int operation);
参数1:是一个已经打开的文件指针
参数2:控制锁定权限,有四个可选值:
LOCK_SH:取得共享锁定(读取程序)
LOCK_EX:取得独占锁定(写入程序)
LOCK_UN:释放锁定
LOCK_NB:防止iflock()在锁定时堵塞
plain copy
print?
php的目录处理函数主要包括如下几个:
①mkdir():创建目录
②is_dir():判断给定文件名是否是一个目录
③rmdir():删除目录
④basename():返回路径中的文件
⑤dirname():返回路径中的目录
(1)mkdir() 函数用于创建一个目录,成功返回 true,否则返回 false
语法:
bool mkdir( string dirname [, int mode ] )
注意:
可选参数 mode 表示创建该目录时给定的权限,默认是最大权限 0777
案例:
<?php
$dirname = 'testdir';
if (mkdir($dirname, 0700)) {
echo "目录 $dirname 创建成功";
} else {
echo "目录 $dirname 创建失败";
}
?>
(2)is_dir() 函数用于检查给定文件名是否是一个目录,成功返回 true,否则返回 false
语法:
bool is_dir( string filename )
案例:
<?php
var_dump(is_dir( 'images' )); //输出:bool(true)
?>
(3)rmdir() 函数用于删除一个目录,成功返回 true,否则返回 false
语法:
bool rmdir( string dirname )
案例:
<?php
$dirname = 'testdir';
if (rmdir( $dirname )) {
echo "目录 $dirname 删除成功";
} else {
echo "目录 $dirname 删除失败";
}
?>
(4)basename() 函数用于返回一个包含全路径的字符串中的基本文件名,成功返回字符串,否则返回 false
语法:
string basename( string path [, string suffix] )
注意:
可选参数 suffix 表示文件后缀,如果文件名后缀是 suffix ,那这一部分也会被去掉
案例: 假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php
<?php
echo $PHP_SELF; //输出:/html/test.php
echo basename( $PHP_SELF ); //输出:test.php
echo basename( $PHP_SELF, '.php'); //输出:test
?>
(5)dirname() 函数用于返回一个包含全路径的字符串中去掉文件名的目录,成功返回字符串,否则返回 false。
语法:
string dirname( string path )
案例:
假定本地访问该文件 URL 地址为:http://127.0.0.1/html/test.php
<?php
echo $PHP_SELF; //输出 /html/test.php
echo dirname( $PHP_SELF ); //输出 /html
?>
[php] view
plain copy
print?
php提供了丰富的文件处理函数
文件处理主要包括:
①文件的创建/打开
②文件的写入
③文件读取
④检查文件是否存在
⑤文件的拷贝与删除
⑥获取文件的大小、类型及修改时间
fopen()函数的使用:
fopen()函数主要用来打开一个文件或url地址
语法:
resource fopen(string filename,mode);
①参数filename:尝试打开或创建的文件名
②参数mode:打开模式
注意:
1.php中没有单独的文件创建函数,创建或打开文件都是使用fopen()函数
2.当使用fopen()函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源;如果打开失败,返回false
案例1,使用fopen()函数创建一个文件:
<?php
if(!file_exists("test.txt")){//如果文件不存在(当前目录下)
$fh=fopen("test.txt","w");//以只写模式创建一个test.txt文件
fclose($fh);//关闭文件
}
?>
案例2,使用fopen()函数打开url地址
<?php
$fh=fopen("http://www.baidu.com","r");
if($fh){
while(!feof($fh)){
echo fgets($fh);
}
}
?>
注意:fopen()返回的只是一个资源,要想显示打开的页面地址,还需要使用fgets()函数读取,并使用echo输出
fwrite()函数的使用:
fwrite()函数主要用来向文件写入字符串,如果写入成功,则返回写入的字符数,否则返回false
格式:
int fwrite(resource handle,string data,int length)
注意:fwrite()函数将data的内容写入文件指针handle处
注意:如果指定了可选参数length,当写入了length个字节或者写完了data以后,写入就会停止
案例1,写入文件:
<?php
$filename="file.txt";//要写入的文件名称
$content="你好!";//要写入的内容
$fh=fopen($filename,"w");//打开文件
$num=fwrite($fh,$content);//将内容写入文件中,返回写入的字符数
//$num=fwrite($fh,$content,4);//只能将四个字符写入到file.txt文件中
echo $num;//输出结果为:6
fclose($fh);//关闭文件
?>
案例2,追加写入:
<?php
$filename="file.txt";
$content="你好!";
$fh=fopen($filename,"a");
echo fwrite($fh,$content);
fclose($fh);//关闭文件
?>
file_put_contents()函数的使用:
file_put_content():此函数主要用于一次性将字符串写入文件或追加字符串到文件,如果成功,返回写入到文件的字符数,失败的话返回false
语法:
int file_put_content(string filename,string data,int flags,resource context);
案例1,写入文件:
<?php
echo file_put_contents("file.txt","你好");//浏览器输出结果为:4
?>
注意:
1.如果文件不存在,则创建文件,相当于fopen()函数行为
2.如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免
案例2,追加写入:
<?php
file_put_contents("file.txt","你好",FILE_APPEND);//追加内容到文件尾部
?>
文件的读取函数:
文件的读取函数主要有如下几种:
①fread():从文件中读取数据
②fgets():从文件中读取一行数据,并将文件指针指向下一行
③fgetc():逐字读取文件数据,直到文件结束
④file():把整个文件内容读取到一个数组中,数组中的每个元素都是文件中对应的一行
⑤file_get_contents():将整个文件内容读入到一个字符串
fread():此函数用于读取文件
语法:
string fread(int handle,int length);
注意:
fread()函数从文件指针handle读取最多length个字节。当遇到下列情况时,会停止读取文件
①在读取完最多length个字节数时
②达到文件末尾的时候(eof)
案例:从文件中读取10个字节
<?php
$filename = "test.txt";
$fh = fopen($filename, "r");
echo fread($fh, "10");
fclose($fh);
?>
fgets():此函数主要用来从文件中读取一行数据,并将文件指针指向下一行
语法:
string fgets(int handle,int length)
注意:
①fgets() 从 handle 指向的文件中读取一行并返回长度最多为 length-1 字节的字符串
②碰到换行符(包括在返回值中)、EOF 或者已经读取了 length-1 字节后停止
③如果没有指定 length ,则默认为 1K ,或者说 1024 字节
案例:
<?php
$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
// if条件避免无效指针
if($fh){
while(!feof($fh)) {
echo fgets($fh), '<br />';
}
}
fclose($fh);
?>
feof() 函数测试文件指针是否到了文件结束的位置,该文件指针必须有效,如果是无效的资源,则会陷入无限循环中
fgetc():此函数主要用于逐字读取文件数据,直到文件结束
语法:
string fgetc(resource handle);
案例:从文件中读取10个字节
<?php
$fh = @fopen("test.txt","r") or die("打开 test.txt 文件出错!");
if($fh){
while(!feof($fh)) {
echo fgetc($fh);
}
}
fclose($fh);
?>
file():此函数主要用于把整个文件读取到一个数组中,数组中的每个单元都是文件中相应的一行,成功,返回一个数组;失败返回false
语法:
array file(string filename);
案例:从文件中读取10个字节
<?php
$lines = file('test.txt');
// 在数组中循环并加上行号
foreach ($lines as $line_num => $line) {
echo "Line #{$line_num} : ",$line,'<br />';
}
?>
test.txt 文件内容:
你好!
这是第二行文字。
浏览器显示:
Line #0 : 你好!
Line #1 : 这是第二行文字。
file_get_contents():此函数主要用于将整个文件读入到一个字符串,成功,则返回一个字符串;失败则返回false
语法:
string file_get_contents(string filename,int offset,int maxlen);
案例:
<?php
// 读取时同事将换行符转换成 <br />
echo nl2br(file_get_contents('test.txt'));
?>
file_exists():此函数主要用来检查一个文件或目录是否存在
语法:
bool file_exists(string filename);
案例:
<?php
$filename = 'test.txt';
if (file_exists($filename)) {
echo "文件 $filename 存在";
} else {
echo "文件 $filename 不存在";
}
?>
copy():此函数主要用来拷贝文件
成功返回true,失败返回false
语法:
bool copy(string file,string newfile);
案例:
<?php
if (copy('test.txt', 'test.txt.bak')) {
echo "文件拷贝成功";
} else {
echo "文件拷贝失败";
}
?>
unlink():此函数主要用来删除文件
成功返回true,失败返回false
语法:
bool unlink(string filename);
案例:
<?php
unlink("test.txt");
?>
获取文件信息的函数主要有如下几种:
①filesize():取得文件大小,成功则返回文件大小的字节数,失败返回false
②filetype():取得文件的类型,成功则返回文件的类型,可能的值有file、dir、char、block、link等
③filemtime():取得文件的修改时间,成功则返回文件上次被修改的时间戳
问题?
如何锁定文件:在向一个文本文件中写入数据时,需要先锁定文件,以防其它用户同时也修改此文件内容,如何锁定文件呢?
php中通过flock()函数实现文件锁定,语法如下:
bool flock(int handle,int operation);
参数1:是一个已经打开的文件指针
参数2:控制锁定权限,有四个可选值:
LOCK_SH:取得共享锁定(读取程序)
LOCK_EX:取得独占锁定(写入程序)
LOCK_UN:释放锁定
LOCK_NB:防止iflock()在锁定时堵塞
相关文章推荐
- 监听ContentProvider数据改变
- yii ajax 更新数据
- php中类的相关函数
- ContentProvider和Uri详解
- PHP7扩展开发之hello word
- 关于阿里云服务器的常用配置和php开发总结
- PHP时间格式大全
- Ubuntu下tftp服务器的搭建
- PHP 截取字符串,多余部分用 ........ 代替
- php 日期处理 例子
- PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件
- PHP文件读写以及本地跑数据一些坑
- PHP大量用户登录解决方案
- 多用户开源系统哪个好
- php 的编译原理 剖析
- 解决 PhpStorm 对 用单例模式实例化PHP类时,代码自动提示功能失效 的问题
- php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
- 父类方法返回子类实例:PHP延迟静态绑定
- 完美利用Yii2微信后台开发的系列总结
- yii中登录后跳转回登录前请求的页面