PHP函数(三) 文件处理函数

    文件系统函数    
函数名 描述 实例 输入 输出 操作
fopen() 打开文件或者 URL $handle = fopen("ftp://user:password@example.com/somefile.txt", "w"); resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] ) 如果打开失败,本函数返回 FALSE  
fclose() 关闭一个已打开的文件指针 $handle = fopen('somefile.txt', 'r');
fclose($handle);
bool fclose(resource handle) 如果成功则返回 TRUE,失败则返回 FALSE  
文件属性
file_exists() 检查文件或目录是否存在 $filename = '/path/to/foo.txt';
if (file_exists($filename)) {
    echo "exists";
} else {
    echo "does not exist";
}
bool file_exists ( string filename ) 指定的文件或目录存在则返回 TRUE,否则返回 FALSE  
filesize() 取得文件大小 $filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . 'bytes';
int filesize ( string $filename ) 返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误  
is_readable() 判断给定文件是否可读 $filename = 'test.txt';
if (is_readable($filename)) {
    echo '可读';
} else {
    echo '不可读';
}
bool is_readable ( string $filename ) 如果由 filename 指定的文件或目录存在并且可读则返回 TRUE  
is_writable() 判断给定文件是否可写 $filename = 'test.txt';
if (is_writable($filename)) {
    echo '可写';
} else {
    echo '不可写';
}
bool is_writable ( string $filename ) 如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名 同名函数is_writable()
is_executable() 判断给定文件是否可执行 $file = 'setup.exe';
if (is_executable($file)) {
    echo '可执行';
} else {
    echo '不可执行';
}
bool is_executable ( string $filename ) 如果文件存在且可执行则返回 TRUE  
filectime() 获取文件的创建时间 $filename = 'somefile.txt';
echo filectime($filename);
int filectime ( string $filename ) 时间以 Unix 时间戳的方式返回,如果出错则返回 FALSE  
filemtime() 获取文件的修改时间 $filename = 'somefile.txt';
echo filemtime($filename);
int filemtime ( string $filename ) 返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix时间戳的方式返回  
fileatime() 获取文件的上次访问时间 $filename = 'somefile.txt';
echo fileatime($filename);
int fileatime (string $filename) 返回文件上次被访问的时间,如果出错则返回 FALSE。时间以Unix时间戳的方式返回  
stat() 获取文件大部分属性值 $filename = 'somefile.txt';
var_dump(fileatime($filename));
array stat (string $filename) 返回由 filename 指定的文件的统计信息  
文件操作
fwrite() 写入文件 $filename = 'test.txt';
$somecontent = "添加这些文字到文件\n";
$handle = fopen($filename, 'a');    fwrite($handle, $somecontent);
fclose($handle);
int fwrite ( resource handle, string string [, int length] ) 把 string 的内容写入 文件指针 handle 处。 如果指定了 length ,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况 同名函数 fputs()
fputs() 同上       同名函数 fwrite()
fread() 读取文件 $filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize ($filename));
fclose($handle);
string fread ( int handle, int length )从文件指针 handle,读取最多 length 个字节 从文件指针 handle 读取最多 length 个字节  
feof() 检测文件指针是否到了文件结束的位置 $file = @fopen("no_such_file", "r");
while (!feof($file)) {
}
fclose($file);
bool feof ( resource handle ) 如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE  
fgets() 从文件指针中读取一行 $handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
string fgets ( int handle [, int length] ) 从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。  
fgetc() 从文件指针中读取字符 $fp = fopen('somefile.txt', 'r');
if (!$fp) {
    echo 'Could not open file somefile.txt';
}
while (false !== ($char = fgetc($fp))) {
    echo "$char\n";
}
string fgetc ( resource $handle ) 返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到。碰到 EOF 则返回 FALSE  
file() 把整个文件读入一个数组中 $lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode('', file ('http://www.example.com/'));
array file ( string $filename [, int $use_include_path [, resource $context ]] ) 数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE  
readfile() 输出一个文件   int readfile ( string $filename [, bool $use_include_path [, resource $context ]] ) 读入一个文件并写入到输出缓冲。返回从文件中读入的字节数。如果出错返回 FALSE  
file_get_contents() 将整个文件读入一个字符串 echo file_get_contents('http://www.baidu.com'); string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )    
file_put_contents() 将一个字符串写入文件 file_put_contents('1.txt','aa'); int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] ) 该函数将返回写入到文件内数据的字节数  
ftell() 返回文件指针读/写的位置 $fp=fopen('tx.txt','r'); 
 fseek($fp,10);
 echo ftell($fp);
 fread($fp,4);
 echo ftell($fp);
int ftell ( resource $handle ) 返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量  
fseek() 在文件指针中定位 $fp=fopen('tx.txt','r'); 
 fseek($fp,10);
 echo ftell($fp);
 fread($fp,4);
 echo ftell($fp);
int fseek ( resource $handle , int $offset [, int $whence ] ) 成功则返回 0;否则返回 -1  
rewind() 倒回文件指针的位置 $fp=fopen('tx.txt','r'); 
 fseek($fp,3);
 echo ftell($fp);
 fread($fp,4);
 rewind($fp);
 echo ftell($fp);
bool rewind ( resource $handle ) 如果成功则返回 TRUE,失败则返回 FALSE  
flock() 轻便的咨询文件锁定 $fp=fopen('tx.txt','r');
flock($fp, LOCK_SH);//共享锁
//flock($fp, LOCK_EX);//独立锁,写文件时用它打开
//flock($fp, LOCK_NB);//附加锁
flock($fp, LOCK_UN);//释放锁
fclose($fp);
bool flock ( int $handle , int $operation [, int &$wouldblock ] ) 如果成功则返回 TRUE,失败则返回 FALSE  
目录
basename() 返回路径中的文件名部分 path = "/home/httpd/html/index.php";
$file = basename($path);
$file = basename($path,".php"); 
string basename ( string $path [, string $suffix ] ) 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉  
dirname() 返回路径中的目录部分 $path = "/etc/passwd";
$file = dirname($path);
string dirname ( string $path ) 给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名  
pathinfo() 返回文件路径的信息 echo '<pre>';
print_r(pathinfo("/www/htdocs/index.html"));
echo '</pre>';
mixed pathinfo ( string $path [, int $options ] ) 返回一个关联数组包含有 path 的信息  
opendir() 打开目录句柄 $fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);
resource opendir ( string $path [, resource $context ] ) 如果成功则返回目录句柄的 resource,失败则返回 FALSE  
readdir() 从目录句柄中读取条目 $fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);
string readdir ( resource $dir_handle ) 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回  
closedir() 关闭目录句柄 $fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp);
closedir($fp);
void closedir ( resource $dir_handle ) 关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开  
rewinddir() 倒回目录句柄 $fp=opendir('E:/xampp/htdocs/php/study/19');
echo readdir($fp).'<br />';
echo readdir($fp).'<br />';
echo readdir($fp).'<br />';
rewinddir($fp);
echo readdir($fp).'<br />';
closedir($fp);
void rewinddir ( resource $dir_handle ) 将 dir_handle 指定的目录流重置到目录的开头  
mkdir() 新建目录 mkdir('123'); bool mkdir ( string $pathname [, int $mode [, bool $recursive [, resource $context ]]] ) 尝试新建一个由 pathname 指定的目录  
rmdir() 删除目录 rmdir('123'); bool rmdir ( string $dirname ) 尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。如果成功则返回 TRUE,失败则返回 FALSE  
unlink() 删除文件 unlink('123/1.txt');
rmdir('123');
bool unlink ( string $filename ) 删除 filename 。和 Unix C 的 unlink() 函数相似。如果成功则返回 TRUE,失败则返回 FALSE  
copy() 拷贝文件 copy('index.php','index.php.bak'); bool copy ( string $source , string $dest ) 将文件从 source 拷贝到 dest 。如果成功则返回 TRUE,失败则返回 FALSE  
rename() 重命名一个文件或目录 rename('tx.txt','txt.txt'); bool rename ( string $oldname , string $newname [, resource $context ] ) 如果成功则返回 TRUE,失败则返回 FALSE  
文件的上传与下载
is_uploaded_file() 判断文件是否是通过 HTTP POST 上传的 if(is_uploaded_file($_FILES['bus']['tmp_name'])){
  if( move_uploaded_file($_FILES['bus']['tmp_name'], $NewPath) ){
   echo '上传成功<br /><img src="'.$NewPath.'">';
  }else{
   exit('失败');
   }
 }else{
  exit('不是上传文件');
 }
bool is_uploaded_file ( string $filename )    
move_uploaded_file() 将上传的文件移动到新位置 if(is_uploaded_file($_FILES['bus']['tmp_name'])){
  if( move_uploaded_file($_FILES['bus']['tmp_name'], $NewPath) ){
   echo '上传成功<br /><img src="'.$NewPath.'">';
  }else{
   exit('失败');
   }
 }else{
  exit('不是上传文件');
 }
bool move_uploaded_file ( string $filename , string $destination )    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

merlin.feng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值