PHP 第八周函数学习笔记

fileinode()

作用

fileinode() 函数返回指定文件的 inode 编号。
如果成功,该函数返回指定文件的 inode 编号。如果失败,则返回 FALSE

用法

fileinode(filename)

测试案例

<?php
    echo fileinode("test.txt");
?>

filemtime()

作用

filemtime() 函数返回文件内容的上次修改时间。
如果成功,该函数将以 Unix 时间戳形式返回文件内容的上次修改时间。如果失败,则返回 FALSE

用法

filemtime(filename)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
echo filemtime("test.txt");
echo "<br />";
echo "Last modified: ".date("F d Y H:i:s.",filemtime("test.txt"));
?>

结果

1139919766
Last modified: February 14 2006 13:22:46.

fileowner()

作用

fileowner() 函数返回指定文件的用户 ID(所有者)。

如果成功,该函数返回用户 ID。如果失败,则返回 FALSE

用法

fileowner(filename)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

注释:该函数不能在 Windows 系统上运行。

提示:请使用 posix_getpwuid() 来把用户 ID 转换为用户名。

测试案例

<?php
echo fileowner("test.txt");
?>

fileperms()

作用

fileperms() 函数返回文件或目录的权限。
如果成功,该函数以数字形式返回权限。如果失败,则返回 FALSE

用法

fileperms(filename)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
echo fileperms("test.txt");
?>

结果

33206

filesize()

作用

filesize() 函数返回指定文件的大小。
如果成功,该函数返回文件大小的字节数。如果失败,则返回 FALSE

用法

filesize(filename)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
echo filesize("test.txt");
?>

结果

20

filetype()

作用

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

如果成功,该函数返回 7 种可能的值之一。如果失败,则返回 FALSE

可能的返回值:

  • fifo
  • char
  • dir
  • block
  • link
  • file
  • unknown

用法

filetype(filename)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
echo filetype("test.txt");
?>

结果

file

flock()

作用

flock() 函数锁定或释放文件。
如果成功,该函数返回 TRUE。如果失败,则返回 FALSE

用法

flock(file,lock,block)
lock    必需。规定要使用哪种锁定类型。
        可能的值:
            LOCK_SH - 共享锁定(读取的程序)。允许其他进程访问该文件。
            LOCK_EX - 独占锁定(写入的程序)。防止其他进程访问该文件。
            LOCK_UN - 释放一个共享锁定或独占锁定
            LOCK_NB - 锁定的情况下避免阻塞其他进程。
block    可选。若设置为 1,则当进行锁定时阻塞其他进程。

提示和注释

注释:这些锁仅在当前的 PHP 进程中使用。如果权限允许,其他的进程可修改或删除一个 PHP-locked 文件。
注释:flock() 在 Windows 下具有强制性。
提示:可以通过 fclose() 来释放锁定操作,脚本执行完成时会自动调用。

测试案例

<?php

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

// exclusive lock
if (flock($file,LOCK_EX)) {
    fwrite($file,"Write something");
    // release lock
    flock($file,LOCK_UN);
} else {
    echo "Error locking file!";
}

fclose($file);
?>

fnmatch()

作用

fnmatch() 函数根据指定的模式来匹配文件名或字符串。

用法

fnmatch(pattern,string,flags)
pattern    必需。规定要检索的模式。

提示和注释

注释:该函数无法在 Windows 平台上使用。

测试案例

<?php
$txt = "My car is darkgrey";
if (fnmatch("*gr[ae]y",$txt))
{
    echo "some form of gray ...";
} else {
    echo "NO";
}

结果

some form of gray ...

fopen()

作用

fopen() 函数打开一个文件或 URL。
如果 fopen() 失败,它将返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

用法

fopen(filename,mode,include_path,context)
mode    必需。规定您请求到该文件/流的访问类型。
        可能的值:
        "r" (只读方式打开,将文件指针指向文件头)
        "r+" (读写方式打开,将文件指针指向文件头)
        "w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之)
        "w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之)
        "a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之)
        "a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容)
        "x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误)
        "x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)
include_path    可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'

提示和注释

注释:当书写一个文本文件时,请确保您使用了正确的行结束符!在 Unix 系统中,行结束符为 \n;在 Windows 系统中,行结束符为 \r\n;在 Macintosh 系统中,行结束符为 \r。Windows 系统中提供了一个文本转换标记 "t" ,可以透明地将 \n 转换为 \r\n。您还可以使用 "b" 来强制使用二进制模式,这样就不会转换数据。为了使用这些标记,请使用 "b" 或者 "t" 来作为 mode 参数的最后一个字符。

测试案例

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>

fpassthru()

作用

fpassthru() 函数从打开文件的当前位置开始读取所有数据,直到文件末尾(EOF),并向输出缓冲写结果。
该函数返回传递的字符数,如果失败则返回 FALSE

用法

fpassthru(file)

提示和注释

注释:当在 Windows 系统的二进制文件中使用 fpassthru() 函数时,请牢记,必须以二进制的模式打开文件。
提示:如果您已经向文件写入数据,就必须调用 rewind() 来将文件指针指向文件头。
提示:如果您只想将文件的内容输出到输出缓冲,而不对它进行修改,请使用 readfile() 函数代替,这样可以省去 fopen() 调用。

测试案例

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

// Read first line
fgets($file);

// Send rest of the file to the output buffer
echo fpassthru($file);

fclose($file);
?>

结果

There are three lines in this file.
This is the last line.59

fputcsv()

作用

fputcsv() 函数将行格式化为 CSV 并写入一个打开的文件中。
该函数返回写入字符串的长度。如果失败,则返回 FALSE

用法

fputcsv(file,fields,seperator,enclosure)
file    必需。规定要写入的打开文件。
fields    必需。规定要从中获得数据的数组。
separator    可选。设置字段分界符(只允许一个字符),默认值为逗号( , )。
enclosure    可选。设置字段环绕符(只允许一个字符),默认值为双引号( " )。

测试案例

<?php
$list = array
(
    "Peter,Griffin,Oslo,Norway",
    "Glenn,Quagmire,Oslo,Norway",
);

$file = fopen("contacts.csv","w");

foreach ($list as $line)
{
    fputcsv($file,split(',',$line));
}

fclose($file); ?>

fputs()

作用

fputs() 函数将内容写入一个打开的文件中。
函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
如果函数成功执行,则返回写入的字节数。如果失败,则返回 FALSE=
fputs() 函数是 fwrite() 函数的别名。

用法

fputs(file,string,length)
file    必需。规定要写入的打开文件。
string    必需。规定要写入打开文件的字符串。
length    可选。规定要写入的最大字节数。

提示和注释

该函数是二进制安全的。(意思是二进制数据(如图像)和字符数据都可以使用此函数写入。)

测试案例

<?php
$file = fopen("test.txt","w");
echo fputs($file,"Hello World. Testing!");
fclose($file);
?>

结果

21

fread()

作用

fread() 函数读取打开的文件。
函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
该函数返回读取的字符串,如果失败则返回 FALSE

用法

string fread ( resource $handle , int $length )
handle    文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
length    必需。规定要读取的最大字节数。

提示和注释

该函数是二进制安全的。(意思是二进制数据(如图像)和字符数据都可以使用此函数写入。)

测试案例

<?php
// 从文件中读取 10 个字节
$file = fopen("test.txt","r");
$contents = fread($file,"10");
fclose($file);

// 读取整个文件
$file = fopen("test.txt","r");
$contents = fread($file,filesize("test.txt"));
fclose($file);
?>

fscanf()

作用

fscanf() 函数根据指定的格式对来自打开的文件的输入进行解析。

用法

fscanf(file,format,mixed)

format    必需。规定格式。
        可能的格式值:
            %% - 返回一个百分号 %
            %b - 二进制数
            %c - ASCII 值对应的字符
            %d - 包含正负号的十进制数
            %e - 科学计数法(例如:1.2e+2%u - 不包含正负号的十进制数
            %f - 浮点数(本地属性)
            %F - 浮点数(非本地属性)
            %o - 十进制数
            %s - 字符串
            %x - 十六进制数(小写字母)
            %X - 十六进制数(大写字母)
            附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

            + (在数字前面加上 +- 来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记)
            ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%'x20s(使用 "x" 作为填充))
            - (左调整变量值)
            [0-9] (规定变量值的最小宽度)
            .[0-9] (规定小数位数或最大字符串长度)
            注释:如果使用多个上述的格式值,它们必须按照上面的顺序进行使用,不能打乱。

提示和注释

注释:格式字符串中的任何空白会与输入流中的任何空白匹配。这意味着格式字符串中的制表符 \t 也会与输入流中的一个单一的空格字符匹配。

fseek()

作用

fseek() 函数在打开的文件中定位。
该函数把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。
如果成功该函数返回 0,如果失败则返回 -1。请注意,移动到文件末尾(EOF)之后的位置不会产生错误。

用法

fseek(file,offset,whence)
file    必需。规定要在其中定位的文件。
offset    必需。规定新的位置(从文件头开始以字节数度量)。
whence    可选。(PHP 4 中新增的)。 可能的值:
            SEEK_SET - 设定位置等于 offset。默认。
            SEEK_CUR - 设定位置为当前位置加上 offset。
            SEEK_END - 设定位置为文件末尾(EOF)加上 offset(要移动到文件末尾之前的位置,offset 必须是一个负值)。

提示和注释

通过使用 ftell() 来找到当前位置!

测试案例

<?php
    $file = fopen("test.txt","r");
    // read first line
    fgets($file);
    // move back to beginning of file
    fseek($file,0);
?>

fstat()

作用

fstat() 函数返回关于一个打开的文件的信息。
该函数将返回一个包含下列元素的数组:
    [0][dev] - 设备编号
    [1][ino] - inode 编号
    [2][mode] - inode 保护模式
    [3][nlink] - 连接数目
    [4][uid] - 所有者的用户 ID
    [5][gid] - 所有者的组 ID
    [6][rdev] - inode 设备类型
    [7][size] - 文件大小的字节数
    [8][atime] - 上次访问时间(Unix 时间戳)
    [9][mtime] - 上次修改时间(Unix 时间戳)
    [10][ctime] - 上次 inode 改变时间(Unix 时间戳)
    [11][blksize] - 文件系统 IO 的块大小(如果支持)
    [12][blocks] - 所占据块的数目

用法

fstat(file)

提示和注释

注释:从这个函数返回的结果与服务器到服务器的结果是不相同的。这个数组包含了数字索引、名称索引或同时包含上述二者。

提示:fstat() 函数与 stat() 函数大致类似。唯一的不同点就是,fstat()函数在使用时,文件必须已经打开。

测试案例

<?php
$file = fopen("test.txt","r");
print_r(fstat($file));
fclose($file);
?>

结果

Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 92
    [8] => 1141633430
    [9] => 1141298003
    [10] => 1138609592
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 92
    [atime] => 1141633430
    [mtime] => 1141298003
    [ctime] => 1138609592
    [blksize] => -1
    [blocks] => -1
)

ftell()

作用

ftell() 函数返回在打开文件中的当前位置。
返回文件指针的当前位置,如果失败则返回 FALSE

用法

ftell(file)

提示和注释

注释:从这个函数返回的结果与服务器到服务器的结果是不相同的。这个数组包含了数字索引、名称索引或同时包含上述二者。

提示:fstat() 函数与 stat() 函数大致类似。唯一的不同点就是,fstat()函数在使用时,文件必须已经打开。

测试案例

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

// print current position
echo ftell($file);

// change current position
fseek($file,"15");

// print current position again
echo "<br />" . ftell($file);

fclose($file);
?>

结果

0
15

ftruncate()

作用

ftruncate() 函数把打开文件截断到指定的长度。
如果成功则返回 TRUE,如果失败则返回 FALSE

用法

ftruncate(file,size)

测试案例

<?php
//check filesize
echo filesize("test.txt");
echo "<br />";

$file = fopen("test.txt", "a+");
ftruncate($file,100);
fclose($file);

//Clear cache and check filesize again
clearstatcache();
echo filesize("test.txt");
?>

结果

792
100

fwrite()

作用

fwrite() 函数将内容写入一个打开的文件中。
函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。
如果函数成功执行,则返回写入的字节数。如果失败,则返回 FALSE

用法

fwrite(file,string,length)

测试案例

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

结果

21

glob()

作用

glob() 函数返回一个包含匹配指定模式的文件名或目录的数组。
该函数返回一个包含有匹配文件/目录的数组。如果失败则返回 FALSE

用法

glob(pattern,flags)
pattern    必需。规定检索模式。
flags    可选。规定特殊的设定。
        可能的值:
            GLOB_MARK - 在每个返回的项目中加一个斜线
            GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
            GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
            GLOB_NOESCAPE - 反斜线不转义元字符
            GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a''b''c'
            GLOB_ONLYDIR - 仅返回与模式匹配的目录项
            GLOB_ERR -PHP 5.1 新增的)如果错误则停止,默认情况下忽略所有错误

测试案例

<?php
print_r(glob("*.txt"));
print_r(glob("*.*"));
?>

结果

Array
(
    [0] => target.txt
    [1] => source.txt
    [2] => test.txt
    [3] => test2.txt
)
Array
(
    [0] => contacts.csv
    [1] => default.php
    [2] => target.txt
    [3] => source.txt
    [4] => tem1.tmp
    [5] => test.htm
    [6] => test.ini
    [7] => test.php
    [8] => test.txt
    [9] => test2.txt
)

is_dir()

作用

is_dir() 函数检查指定的文件是否是一个目录。
如果目录存在,该函数返回 TRUE

用法

is_dir(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "images";
if (is_dir($file)) {
    echo ("$file is a directory");
} else {
    echo ("$file is not a directory");
}
?>

结果

images is a directory

is_executable()

作用

is_executable() 函数检查指定的文件是否可执行。
如果文件可执行,该函数返回 TRUE

用法

is_executable(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。
注释:自 PHP 5.0 版本起,is_executable() 函数可用于 Windows。

测试案例

<?php
$file = "setup.exe";
if (is_executable($file)) {
    echo ("$file is executable");
} else {
    echo ("$file is not executable");
}
?>

结果

setup.exe is executable

is_file()

作用

is_file() 函数检查指定的文件是否是常规的文件。
如果文件是常规的文件,该函数返回 TRUE

用法

is_file(file)

提示和注释

该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "test.txt";
if (is_file($file)) {
    echo ("$file is a regular file");
} else {
    echo ("$file is not a regular file");
}
?>

结果

test.txt is a regular file

is_link()

作用

is_link() 函数检查指定的文件是否是一个连接。
如果文件是一个连接,该函数返回 TRUE

用法

is_link(file)

提示和注释

该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$link = "images";
if (is_link($link)) {
    echo ("$link is a link");
} else {
    echo ("$link is not a link");
}
?>

结果

images is not a link

is_readable()

作用

is_readable() 函数检查指定的文件是否可读。
如果文件可读,该函数返回 TRUE

用法

is_readable(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "test.txt";
if (is_readable($file)) {
    echo ("$file is readable");
} else {
    echo ("$file is not readable");
}
?>

结果

test.txt is readable

is_uploaded_file()

作用

is_uploaded_file() 函数检查指定的文件是否是通过 HTTP POST 上传的。
如果文件是通过 HTTP POST 上传的,该函数返回 TRUE

用法

is_uploaded_file(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "test.txt";
if(is_uploaded_file($file)) {
    echo ("$file is uploaded via HTTP POST");
} else {
    echo ("$file is not uploaded via HTTP POST");
}
?>

结果

test.txt is not uploaded via HTTP POST

is_writable()

作用

is_writable() 函数检查指定的文件是否可写。
如果文件可写,该函数返回 TRUE。是通过 HTTP POST 上传的,该函数返回 TRUE

用法

is_writable(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "test.txt";
if (is_writable($file)) {
    echo ("$file is writeable");
} else {
    echo ("$file is not writeable");
}
?>

结果

test.txt is writeable

is_writeable()

作用

is_writeable() 函数检查指定的文件是否可写。
如果文件可写,该函数返回 TRUE。
该函数是 is_writable() 函数的别名。如果文件可写,该函数返回 TRUE。是通过 HTTP POST 上传的,该函数返回 TRUE

用法

is_writeable(file)

提示和注释

注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。

测试案例

<?php
$file = "test.txt";
if (is_writeable($file)) {
    echo ("$file is writeable");
} else {
    echo ("$file is not writeable");
}
?>

结果

test.txt is writeable

link()

作用

link() 函数创建一个从指定名称连接的现存目标文件开始的硬连接。
如果成功,该函数返回 TRUE。如果失败,则返回 FALSE

用法

link(target,link)

target    必需。
link    必需。

提示和注释

注释:这不是一个 HTML 连接,而是一个文件系统中的连接。
注释:该函数不能作用于远程文件。

测试案例

<?php
$target = 'source.ext'; // This is the file that already exists
$link = 'newfile.ext'; // This the filename that you want to link it to

link($target, $link);
?>

linkinfo()

作用

linkinfo() 函数返回有关一个硬连接的信息。
该函数返回设备 ID,如果失败则返回 FALSE

用法

linkinfo(path)

path    必需。规定要检查的路径。

提示和注释

注释:这不是一个 HTML 连接,而是一个文件系统中的连接。
注释:该函数不能在 Windows 平台上执行。

测试案例

<?php
    echo linkinfo('/vmlinuz'); // 835
?>

lstat()

作用

lstat() 函数返回关于文件或符号连接的信息。
该函数将返回一个包含下列元素的数组:
    [0][dev] - 设备编号
    [1][ino] - inode 编号
    [2][mode] - inode 保护模式
    [3][nlink] - 连接数目
    [4][uid] - 所有者的用户 ID
    [5][gid] - 所有者的组 ID
    [6][rdev] - inode 设备类型
    [7][size] - 文件大小的字节数
    [8][atime] - 上次访问时间(Unix 时间戳)
    [9][mtime] - 上次修改时间(Unix 时间戳)
    [10][ctime] - 上次 inode 改变时间(Unix 时间戳)
    [11][blksize] - 文件系统 IO 的块大小(如果支持)
    [12][blocks] - 所占据块的数目

用法

lstat(file)

path    必需。规定要检查的路径。

提示和注释

注释:从这个函数返回的结果与服务器到服务器的结果是不相同的。这个数组包含了数字索引、名称索引或同时包含上述二者。
注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。
提示:lstat() 函数与 stat() 函数大致类似。唯一的不同点就是,如果 file 参数是一个符号连接,那么将返回该符号连接的状态(而不是该符号连接所指向的文件的状态)。

测试案例

<?php
print_r(lstat("test.txt"));
?>

结果

Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 92
    [8] => 1141633430
    [9] => 1141298003
    [10] => 1138609592
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 92
    [atime] => 1141633430
    [mtime] => 1141298003
    [ctime] => 1138609592
    [blksize] => -1
    [blocks] => -1
)

参考

PHP 5 Filesystem 函数 | 菜鸟教程

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

这学习态度,必须点赞啊

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!