PHP操作文件的常用函数

文章目录


demo.txt 内容:

this is demo.txt 1
this is demo.txt 2
this is demo.txt 3
this is demo.txt 4
this is demo.txt 5
this is demo.txt 6
this is demo.txt 7
this is demo.txt 8
this is demo.txt 9

fopen() 打开文件或者 URL

fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) : resource

在这里插入图片描述

$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");

fsockopen()打开一个网络连接或者一个Unix套接字连接

在这里插入图片描述

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}

fwrite () 写入文件

fwrite ( resource $handle , string $string [, int $length ] ) : int	

在这里插入图片描述

$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);

basename() 返回路径中的文件名部分。

echo "1) ".basename("/etc/sudoers.d").PHP_EOL;
echo "2) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "3) ".basename("/etc/passwd").PHP_EOL;
echo "4) ".basename("/etc/").PHP_EOL;
echo "5) ".basename(".").PHP_EOL;
echo "6) ".basename("/");
/*
1) sudoers.d
2) sudoers
3) passwd
4) etc
5) .
6)
 */

copy()复制文件

copy ( string $source , string $dest [, resource $context ] ) : bool
echo copy("要复制的文件路径/链接.txt","target.txt");//bool(true/false)

dirname () 返回路径中的目录部分

dirname ( string $path ) : string
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or \ on Windows)
echo "3) " . dirname("."); // 3) .

disk_free_space () 返回目录中的可用空间

disk_free_space ( string $directory ) : float
echo disk_free_space('c:');//37684822016 返回可用的字节数。

disk_total_space () 返回一个目录的磁盘总大小

disk_total_space ( string $directory ) : float
echo disk_total_space('c:');//118409187328 字节数

fclose 关闭一个已打开的文件指针

fclose ( resource $handle ) : bool 
$handle = fopen('somefile.txt', 'r');
fclose($handle);

feof() 测试文件指针是否到了文件结束的位置

feof ( resource $handle ) : bool
$file = fopen("demo.txt", "r");

//输出文本中所有的行,直到文件结束为止。
while(!feof($file))
{
    echo fgets($file);
}

fclose($file);

fgetc 从文件指针中读取一个字符

fgetc ( resource $handle ) : string 
$file = fopen("demo.txt", "r");
echo fgetc($file);//t

fgets 从文件指针中读取一行

fgets ( resource $handle [, int $length ] ) : string
$file = fopen("demo.txt", "r");
echo fgets($file,2048);//this is demo.txt 1

fgetss() 从打开的文件中读取一行并过滤掉 HTML 和 PHP 标记。

fgetss ( resource $handle [, int $length [, string $allowable_tags ]] ) : string
demo.txt
<div><p><span>this is demo.txt 1</span></p></div>

demo.php
$file = fopen("demo.txt", "r");
echo fgetss($file,1024,'<span><p>');
//<p><span>this is demo.txt 1</span></p>

file() 把整个文件读入一个数组中

file ( string $filename [, int $flags = 0 [, resource $context ]] ) : array

在这里插入图片描述

demo.txt
<div><p><span>this is demo.txt 1</span></p></div>
this is demo.txt 2
this is demo.txt 3
this is demo.txt 4
this is demo.txt 5
this is demo.txt 6


this is demo.txt 7
this is demo.txt 8
this is demo.txt 9

print_r( file('demo.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));
/*
Array
(
    [0] => <div><p><span>this is demo.txt 1</span></p></div>
    [1] => this is demo.txt 2
    [2] => this is demo.txt 3
    [3] => this is demo.txt 4
    [4] => this is demo.txt 5
    [5] => this is demo.txt 6
    [6] => this is demo.txt 7
    [7] => this is demo.txt 8
    [8] => this is demo.txt 9
)*/

file_exists ( string $filename ) : bool 检查文件或目录是否存在

file_get_contents () 将整个文件读入一个字符串

file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] ) : string
echo file_get_contents('demo.txt');
/*
 <div><p><span>this is demo.txt 1</span></p></div>
this is demo.txt 2
this is demo.txt 3
this is demo.txt 4
this is demo.txt 5
this is demo.txt 6


this is demo.txt 7
this is demo.txt 8
this is demo.txt 9
*/
echo file_get_contents('demo.txt',false,null,1,10);//div><p><sp

file_put_contents 将一个字符串写入文件

file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) : int 
该函数将返回写入到文件内数据的字节数,失败时返回FALSE

在这里插入图片描述

echo file_put_contents('demo.txt','this is yzx',FILE_APPEND);

filesize() 函数返回指定文件的大小 ,返回字节数

filetype() 返回指定文件或目录的类型。

flock() 锁定或释放文件

flock( resource $handle , int $operation [, int &$wouldblock ] ) : bool

在这里插入图片描述

$file= fopen("demo.txt", "r+");
// 排它性的锁定
if (flock($file,LOCK_EX ))
{
    fwrite($file,"Write something fsdfsadf");
    // release lock
    flock($file,LOCK_UN);
    echo 111;
}
else
{
    echo "Error locking file!";
}

fclose($file);

unlink() 删除文件

若成功,则返回 true,失败则返回 false。

fgetcsv() 从文件指针中读入一行并解析 CSV 字段

fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] ) : array

在这里插入图片描述

$file = fopen("demo.csv","r");
print_r(fgetcsv($file)) ;
fclose($file);die;

fputcsv() 将行格式化为 CSV 并写入文件指针

fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] ) : int

在这里插入图片描述

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

fpassthru() 函数输出文件指针处的所有剩余数据

$file = fopen("demo.txt","r");

// 读取第一行
fgets($file);

// 把文件的其余部分发送到输出缓存
echo fpassthru($file);

fclose($file);

parse_ini_file() 函数解析一个配置文件,并以数组的形式返回其中的设置。

test.ini
[names]
me = Robert
you = Peter

[urls]
first = "http://www.example.com"
second = "http://www.w3school.com.cn"

demo.php
print_r(parse_ini_file("test.ini"));
/*
Array
(
[me] => Robert
[you] => Peter
[first] => http://www.example.com
[second] => http://www.w3school.com.cn
)
*/
print_r(parse_ini_file("test.ini",true));
Array
(
[names] => Array
  (
  [me] => Robert
  [you] => Peter
  )
[urls] => Array
  (
  [first] => http://www.example.com
  [second] => http://www.w3school.com.cn
  )
)

pathinfo() 以数组的形式返回文件路径的信息

在这里插入图片描述

 var_dump(pathinfo('http://blog.yaozhixiong.top/php/index.php'));
array(4) {
  'dirname' =>
  string(31) "http://blog.yaozhixiong.top/php"
  'basename' =>
  string(9) "index.php"
  'extension' =>
  string(3) "php"
  'filename' =>
  string(5) "index"
}

realpath() 返回文件的绝对路径

rename() 函数重命名文件或目录

在这里插入图片描述

mkdir() 创建目录

若成功,则返回 true,否则返回 false。
在这里插入图片描述

move_uploaded_file() 将上传的文件移动到新位置

若成功,则返回 true,否则返回 false。
在这里插入图片描述

rmdir() 删除空目录

只能删除空的目录 且不能递归删除

touch() 设置指定文件的访问和修改时间

文件不存在会被创建
在这里插入图片描述

unlink() 删除文件

若成功,则返回 true,失败则返回 false。

fseek() 在打开的文件中定位

在这里插入图片描述

$file = fopen("demo.txt","r");

fseek($file,3);
// 读取第一行
echo fgets($file);//v><p><span>this is demo.txt 1</span></p></div>

rewind() 将文件指针的位置倒回文件的开头。

$file = fopen("demo.txt","r");

fseek($file,3);
// 读取第一行
echo fgets($file);//v><p><span>this is demo.txt 1</span></p></div>
echo fgets($file);//this is demo.txt 2
rewind($file);
echo fgets($file);//<div><p><span>this is demo.txt 1</span></p></div>

若成功,则返回 true。若失败,则返回 false。

glob() 寻找与模式匹配的文件路径

在这里插入图片描述


rint_r(glob("*.txt"));
Array
(
[0] => target.txt
[1] => source.txt
[2] => test.txt
[3] => test2.txt
)

scandir() 列出指定路径中的文件和目录

scandir ( string $directory [, int $sorting_order [, resource $context ]] ) : array

在这里插入图片描述

opendir() 打开目录

readdir() 获取打开目录中的一条子目录/文件名称

closedir(); 关闭目录

is_dir() 判断指定的文件名是否是一个目录。

is_executable() 判断文件是否可执行。

is_file() 判断指定文件是否为常规的文件。

is_link() 判断指定的文件是否是连接。

is_readable() 判断文件是否可读。

is_uploaded_file() 判断文件是否是通过 HTTP POST 上传的。

is_writable() 判断文件是否可写。

统计指定文件夹下的所有文件跟目录数

$numdir = $numfile = 0;
function foo ($dir)
{
    global $numdir,$numfile;
    foreach (scandir($dir) as $key => $val)
    {
        if ($val !== '.' && $val !== '..')
        {
            if ( is_dir($file = $dir.'/'.$val))
            {
                ++$numdir;//目录数
                foo($file);
            }
            if ( is_file($dir.'/'.$val))
            {
                ++$numfile;//文件数量
            }
        }
    }
}
foo('laravel');
echo '目录数:'.$numdir.PHP_EOL;
echo '文件数:'.$numfile;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值