[PHP从小白到大牛]-019 PHP文件IO

文件相关函数/文件IO

文件信息相关

filetype()

filetype($filepath);获取文件的类型;返回的是文件的类型

  • 返回文件的类型
  • 参数:filepath 文件的路径
  • 可能的值有 fifochardirblocklinkfileunknown
  • 若是出错则返回 FALSE
<?php

$file_path = 'sort.php';
$dir_path = '../0809';

var_dump(filetype($file_path)); // file
var_dump(filetype($dir_path)); // dir
复制代码
D:\php20190701\php_code\0810\filetype.php:6:string 'file' (length=4)
D:\php20190701\php_code\0810\filetype.php:7:string 'dir' (length=3)
复制代码

filesize()

filesize($filename);获取文件的大小;返回的是字节数;

  • 返回文件大小的字节数,若是出错返回 FALSE 并生成一条 E_WARNING 级的错误
  • 注意: 由于 PHP 的整数类型是有符号整型并且不少平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回没法预期的结果
  • 参数:filename 文件的路径
<?php

$file_path = 'sort.php';

var_dump(filesize($file_path)); // 101字节
复制代码

filectime()

filectime($filename);获取文件的建立时间;返回的是时间戳;

  • 返回文件建立的时间, 或者在失败时返回 FALSE
  • 时间以 Unix 时间戳的方式返回
  • 因为返回的是时间戳,可使用date()函数修改日期和时区;
    • 修改时区:date_default_timezone_set('PRC');
    • 修改为可见日期:date('Y-m-d H:i:s',filectime($filename));
  • 参数:filename 文件的路径

filemtime()

filemtime($filename);获取文件的修改时间;返回的是时间戳;

  • 返回文件上次被修改的时间, 或者在失败时返回 FALSE
  • 时间以 Unix 时间戳的方式返回,可用于 date()
  • (date()函数如上)
  • 参数:filename 文件的路径

fileatime()

fileatime($filename);获取文件的最后访问时间;返回的是时间戳;

  • 返回文件上次被访问的时间, 或者在失败时返回 FALSE
  • 时间以 Unix 时间戳的方式返回
  • 因为返回的是时间戳,可使用date()函数修改日期和时区;
    • date()函数如上;修改时区和修改为可见日期;
  • 参数:filename 文件的路径
<?php

$file_path = 'sort.php';

var_dump(date('Y-m-d H:i:s',filectime($file_path))); 
var_dump(date('Y-m-d H:i:s',filemtime($file_path))); 
var_dump(date('Y-m-d H:i:s',fileatime($file_path))); 
复制代码
D:\php20190701\php_code\0810\filetype.php:5:string '2019-08-10 10:52:53' (length=19)
D:\php20190701\php_code\0810\filetype.php:6:string '2019-08-10 11:15:33' (length=19)
D:\php20190701\php_code\0810\filetype.php:7:string '2019-08-10 10:52:53' (length=19)
复制代码

is_readable()

is_readable($filename);检测文件是否可读;返回布尔值;

  • 若是由 filename 指定的文件或目录存在而且可读则返回 TRUE,不然返回 FALSE
  • 参数:filename 文件的路径

is_writable()/is_writeable()

is_writable($filename)/is_writeable($filename);检测文件是否可写;返回布尔值;

  • 若是文件 filename 存在而且可写则返回 TRUE
  • filename 参数能够是一个容许进行是否可写检查的目录名
  • is_writeable() 是 is_writable() 的别名
  • 参数:filename 要检查的文件名称
<?php

$file_path = 'sort.php';

var_dump(is_readable($file_path));
var_dump(is_writable($file_path));
var_dump(is_writeable($file_path));
复制代码
D:\php20190701\php_code\0810\filetype.php:5:boolean true
D:\php20190701\php_code\0810\filetype.php:6:boolean true
D:\php20190701\php_code\0810\filetype.php:7:boolean true
复制代码

is_executable()

is_executable($filename);检测文件是否可执行;返回布尔值;

  • 判断给定文件名是否可执行
  • 若是文件存在且可执行则返回 TRUE,错误时返回FALSE
  • FALSE表示文件不可执行;
  • 参数:filename 文件的路径
<?php

$file_path = "C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\Code.exe";

var_dump(is_executable($file_path)); // true
复制代码

is_file()

is_file($filename);检测是否为文件;返回布尔值;

  • 判断给定文件名是否为一个正常的文件
  • 若是文件存在且为正常的文件则返回 TRUE,不然返回 FALSE
  • 注意: 由于 PHP 的整数类型是有符号整型并且不少平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回没法预期的结果
  • 参数:filename 文件的路径
<?php

$file_path = 'sort.php';
$dir_path = '../0809';

var_dump(is_file($file_path)); // true
var_dump(is_file($dir_path)); // false
var_dump(is_dir($dir_path)); // true
复制代码

pathinfo()

pathinfo($filename);获取文件路径相关信息;返回一个关联数组;

  • 参数为文件路径
  • 返回一个关联数组包含有 path 的信息
  • 返回关联数组仍是字符串取决于 options
  • 若是没有传入 options ,将会返回包括如下单元的数组 array:dirname,basename 和 extension(若是有),以 及filename
  • options例子:
    • echo pathinfo($filename,PATHINFO_EXTENSION);-------获取文件扩展名
  • options 若是指定了,将会返回指定元素;它们包括:
    • PATHINFO_DIRNAME
    • PATHINFO_BASENAME
    • PATHINFO_EXTENSION
    • PATHINFO_FILENAME
  • 若是没有指定 options 默认是返回所有的单元
  • __FILE__表示文件的完整路径和文件名
<?php

$file_path = 'sort.php';

var_dump(pathinfo($file_path)); // true
复制代码
D:\php20190701\php_code\0810\filetype.php:5:
array (size=4)
  'dirname' => string '.' (length=1)
  'basename' => string 'sort.php' (length=8)
  'extension' => string 'php' (length=3)
  'filename' => string 'sort' (length=4)
复制代码

dirname()

dirname($path);返回文件中的路径部分;

  • 给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名
  • 返回值:返回 path 的父目录
  • 参数:path 一个路径
  • 在 Windows 中,斜线(/)和反斜线(\)均可以用做目录分隔符
  • 在其它环境下是斜线(/)
<?php

$file_path = 'C:\Users\Administrator\Downloads\Firefox Setup 69.0b11.exe';
$file_path2 = 'C:/Users/Administrator/Downloads/Firefox Setup 69.0b11.exe';

var_dump(dirname($file_path)); 
var_dump(dirname($file_path2));
复制代码
D:\php20190701\php_code\0810\filetype.php:6:string 'C:\Users\Administrator\Downloads' (length=32)
D:\php20190701\php_code\0810\filetype.php:7:string 'C:/Users/Administrator/Downloads' (length=32)
复制代码

basename()

basename($filename,$suffix);返回路径中文件名部分;

  • 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名
  • 参数:path 一个路径
  • 在 Windows 中,斜线(/)和反斜线(\)均可以用做目录分隔符
  • 在其它环境下是斜线(/)
  • 第二个参数可选。规定文件扩展名。若是文件有 suffix,则不会输出这个扩展名。
<?php

$file_path = 'C:\Users\Administrator\Downloads\Firefox Setup 69.0b11.exe';

var_dump(basename($file_path));
复制代码
D:\php20190701\php_code\0810\filetype.php:6:string 'Firefox Setup 69.0b11.exe' (length=25)
复制代码
<?php

$file_path = 'C:\Users\Administrator\Downloads\Firefox Setup 69.0b11.exe';

var_dump(basename($file_path,".exe")); // 'Firefox Setup 69.0b11'

复制代码

file_exists()

file_exists($filename);检测文件或者目录是否存在;返回布尔值;

  • 返回值:若是由 filename 指定的文件或目录存在则返回 TRUE,不然返回 FALSE
  • 参数:filename 文件或目录的路径
<?php

$file_path = "sort.php";
$dir_path = "../0809";
$dir_path2 = "../080911";

var_dump(file_exists($file_path)); // true
var_dump(file_exists($dir_path)); // true
var_dump(file_exists($dir_path2)); // false
复制代码

文件操做相关

touch()

touch($filename,$time,$atime); 设定文件的访问和修改时间,若是文件不存在,则会建立文件;返回布尔值

  • 参数:filename要设定的文件名
  • 若是文件不存在,则会被建立
  • 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE
  • time要设定的时间, 若是没有提供参数 time 则会使用当前系统的时间
  • atime若是给出了这个参数,则给定文件的访问时间会被设为 atime,不然会设置 为time
  • 若是没有给出这两个参数,则使用当前系统时间
  • 第二个参数: 设置修改时间
  • 第三个参数: 设置访问时间

unlink()

unlink($filename,$context);删除文件;返回布尔值;

  • 删除 filename
  • 参数:filename文件的路径
  • 发生错误时会产生一个 E_WARNING 级别的错误
  • 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE
<?php

$file_path = "sort.php";


var_dump(unlink($file_path)); // true
复制代码

rename()

rename($oldname,$newname,$path);重命名或者剪切一个文件或目录;返回布尔值;

  • 尝试把 oldname 重命名为 newname
  • 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE
  • path 剪切一个文件或者目录的路径
  • 同一个路径, 通常是重命名
<?php

$old_name = "sort.php";
$new_name = "sort2.php";

var_dump(rename($old_name,$new_name)); // true, 会把sort.php删掉, 新增一个sort2.php
复制代码
  • 若是路径不同, 能够实现剪切的效果
<?php

$old_name = "sort2.php";
$new_name = "../sort2.php";

var_dump(rename($old_name,$new_name)); // true, 实现剪切的效果
复制代码

copy()

copy($filename,$path);拷贝一个文件;返回布尔值;

  • $filename, 文件名
  • $path, 拷贝到的路径
  • 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE
  • 注意: 拷贝远程文件须要开启PHP配置选项中的allow_url_fopen=On
  • 远程copy, 至关于下载
<?php

$old_name = "sort.php";
$new_name = "sort2.php";

var_dump(copy($old_name,$new_name)); // true
复制代码
<?php

$old_name = "http://pic68.nipic.com/file/20150601/2692994_151045402000_2.jpg";
$new_name = "1.jpg";

var_dump(copy($old_name,$new_name)); // 下载
复制代码

文件内容操做相关

fopen()

fopen(filename,mode)php

  • fopen() 函数打开一个文件或 URL。
  • 若是 fopen() 失败,它将返回 FALSE 并附带错误信息。
  • 能够经过在函数名前面添加一个 '@' 来隐藏错误输出。
  • 返回一个文件句柄(handle), 是一个资源类型, 须要配合其余函数使用
  • 第二个参数: 如何打开, 打开方式
    • "r" (只读方式打开,将文件指针指向文件头)
    • "r+" (读写方式打开,将文件指针指向文件头)
    • "w" (写入方式打开,清除文件内容,若是文件不存在则尝试建立之)
    • "w+" (读写方式打开,清除文件内容,若是文件不存在则尝试建立之)
    • "a" (写入方式打开,将文件指针指向文件末尾进行写入,若是文件不存在则尝试建立之)
    • "a+" (读写方式打开,经过将文件指针指向文件末尾进行写入来保存文件内容)
    • 若是找不到文件, r是会报错的, 可是a和w会建立一个新的文件
<?php

$file_path = "test.txt";


var_dump(fopen($file_path, 'r')); // resource
复制代码

fread()

string fread ( resource handle , intlength )html

  • fread() 函数读取打开的文件。数组

  • 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),中止运行。bash

  • 该函数返回读取的字符串,若是失败则返回 FALSE。函数

<?php

$file_path = "test.txt";


$file = fopen($file_path, 'r');

var_dump(fread($file,99)); // hello world !
复制代码
<?php

$file_path = "test.txt";


$file = fopen($file_path, 'r');

var_dump(filesize($file_path));

var_dump(fread($file,filesize($file_path))); // hello world !
复制代码

fwrite()|fput()

fwrite(file,string[,length])url

  • fwrite() 函数将内容写入一个打开的文件中。
  • 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),中止运行。
  • 第二个参数, 可选, 最多能够写入多少个字符
  • 若是函数成功执行,则返回写入的字节数。若是失败,则返回 FALSE。
<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);
复制代码

fclose()

fclose($file)spa

  • fclose() 函数关闭打开的文件。debug

  • 该函数若是成功则返回 TRUE,若是失败则返回 FALSE。指针

<?php
$file = fopen("test.txt","r");
//some code to be executed
fclose($file);
复制代码

fgetc()

fgetc(file)code

  • 一次读取一个字符
<?php


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

for ($i=0; $i < filesize('test.txt'); $i++) { 
	echo fgetc($file);
}


while (!feof($file)) {
	echo fgetc($file);
}
复制代码

fgets()

fgets(file[,length])
复制代码
  • 一次读取一行字符, 包括结尾的换行符
<?php

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

while (!feof($file)) {
	echo fgets($file);
}
复制代码

fgetss()

fgetss(file[,length[,tags]])
复制代码
  • 一次读取一行, 过滤html标签

fgetcsv()

fgetcsv(file[,length[,separator[,enclosure]]])
复制代码
  • 一次获取csv文件的一行, 把这一行内容转换成索引数组
<?php


$file = fopen("index.csv","r");

while ($arr = fgetcsv($file)) {
	var_dump($arr);
}

fclose($file);

复制代码

fputcsv()

fputcsv(file,fields[,seperator[,enclosure]])
复制代码
  • 数组转csv
<?php


$file = fopen("index.csv","r+");

$arr = [
	'hello',
	'world',
	'!!!!'
];


var_dump(fputcsv($file, $arr));
复制代码

file_get_contents()

  • 根据路径, 把文件的内容, 保存到一个字符串中
  • 必选参数为文件路径, 不用指定打开方式, 若是参数是一个网址, 返回网址对应的html源代码
  • 须要开启php.ini里面的openssl, extension=php_openssl.dll
<?php


$str = file_get_contents("index.csv");

var_dump($str);
复制代码

file_put_contents()

  • 把字符串保存到文件
  • 把百度的源代码保存到本地
<?php

file_put_contents('baidu.html', file_get_contents('https://www.baidu.com'));
复制代码

file()

  • 函数把整个文件读入一个数组中。
  • 根据换行, 一行是一个元素, 会保留后面的换行符

readfile()

  • 读取文件内容, 保存到变量里
  • 第一个参数: 文件路径
<?php

$str = readfile('test.txt');
var_dump($str);
复制代码

parse_ini_file()

  • 数解析一个配置文件,并以数组的形式返回其中的设置, 参数是一个路径
<?php

var_dump(parse_ini_file("C:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.ini"));
复制代码

parse_ini_string()

  • 把配置文件的字符串, 转换成关联数组, 参数是字符串
<?php

$ini_string = ' xdebug.profiler_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug" xdebug.trace_output_dir="C:\phpStudy\PHPTutorial\tmp\xdebug" zend_extension="C:\phpStudy\PHPTutorial\php\php-7.2.1-nts\ext\php_xdebug-2.8.0beta1-7.2-vc15-nts.dll" xdebug.remote_enable = 1 xdebug.remote_autostart = 1 ';


var_dump(parse_ini_string($ini_string));
复制代码

highlight_string()

  • 把字符串中的php代码高亮, 参数是字符串

highlight_file()

  • 把文件中的php代码高亮, 参数是文件路径
<?php

var_dump(highlight_file('test.php'));
复制代码
相关文章
相关标签/搜索