在计算机中,各种数据、信息和程序都以文件的形式存储,文件主要作用是保存数据,它既可以保存文字,也可以保存图片、视频和声音等等。
文件在程序中以流的方式操作的。流是指数据在数据源(文件)和程序(内存)之间的经历的路径
所谓文件流,是指通过http协议post或get数据的过程中,传输一方直接以二进制的方式传送某个文件的内容,这样就想成一条文件流。接收方只要将接受的流内容直接写进文件即可。
流根数据的传输可分为输入流和输出流。输入流只数据从数据源到程序的路径。输出流是指数据从程序到数据源的路径
计算机中的文件可以分为多种类型,如文本文件、图片、音频、视频、可执行的程序等。常见的文件类型
文件类型 | 描述 |
block | 块设备文件,如磁盘分区、光驱等 |
char | 字符设备,是指在I/O传输过程中以字符为单位进行传输的设备,如键盘 |
dir | 目录类型,目录也是一种文件 |
fifo | 命名通道,常用于将信息从一个进程传输到另一个进程 |
file | 普遍文件类型,如文本文件、图片、音频等 |
link | 符号链接,指向文件的指针,类似于Windows中的快捷键 |
unknown | 未知类型 |
由于php对文件系统操作是基于UNIX系统的,因此Windows系统只能获得“file”“dir”或“unknown”三种文件类型
为了方便获取文件类型,php提供了filetype()函数,其声明格式如下
string filetype( string $filename)$filename表示文件名,函数返回值为该文件的类型,如文件不存在怎返回false
案例:通过filetype()函数获取文件类型
<?php
$filenameOne="E:/phpstudy_pro/WWW/php.com/index.html";
$filenameTwo="E:/phpstudy_pro/WWW/php.com";
echo "文件类型为".filetype($filenameOne). "<br>";
echo "文件类型为".filetype($filenameTwo)."<br>";
?>
运行结果
需要注意的是,分隔符在Linux系统中是正斜线“/”而在Windows系统中是,一般使用反斜线“\”,但也可以使用正斜线,件内衣尽量使用正斜线。
在操作一个文件时。如果该文件不存在,怎会出现错误,为了避免这种情况的出现啊,php提供了file_exists()函数,用于检查文件或目录是否存在,其声明格式如下:
bool file_exists(string $filename)$filename表示文件或目录,如果指定文件存在,则返回true,否则返回false
案例:file_exists()函数判断文件是否存在
<?php
$filename="E:/phpstudy_pro/WWW/php.com/index.html";
if(file_exists($filename)){
echo "该文件存在";
}else{
echo "该文件不存在";
}
?>
运行结果
在操作文件过程中,经常需要获取文件的一些属性,如文件大小、权限和创建时间等等
php内置了一系列的函数用于获取这些属性,如下所示
函数 | 功能 |
int filesize(string $filename) | 获取文件大小 |
int filectime(string $filename) | 获取文件创建时间 |
int filemtime(string $filename) | 获取文化修改时间 |
int fileatime(string $filename) | 获取文化黄的上次访问时间 |
bool is_readable(string $filename) | 判断文件是否可读 |
bool is_writable(string $filename) | 判断文件是否可写 |
bool is_executable(string $filename) | 判断文件是否可执行 |
bool is_file(string $filename) | 判断文件名是否为一个正常的文件 |
bool is_dir(string $filename) | 判断文件是否是一个目录 |
array stat(string $filename) | 给出文件的信息 |
案例:使用函数获取文件相关信息
<?php
$filename="E:/phpstudy_pro/WWW/php.com/index.html";
if(file_exists($filename)&is_file($filename)){
echo "文件大小:".filesize($filename)."字节<br>";
echo "文件创建时间为:".date('Y-m-d',filectime($filename))."<br>";
echo "文件修改时间为:".date('Y-m-d',filemtime($filename))."<br>";
echo "文件访问时间为:".date('Y-m-d',fileatime($filename))."<br>";
echo is_readable($filename) ? "该文件可读<br>":"该文件不可读<br>";
echo is_writable($filename) ? "该文件可写<br>":"该文件不可写<br>";
echo is_executable($filename) ?"该文件可执行<br>":"该文件不可执行<br>";
}else{
echo "该文件不存在";
}
?>
运行结果
使用stat()函数获取文件统计信息
案例
<?php
$filename="E:/phpstudy_pro/WWW/php.com/index.html";
if(file_exists($filename)&is_file($filename)){
echo "<pre>";
print_r(stat($filename));
echo "</pre>";
}else{
echo "该文件不存在";
}
?>
运行结果
使用stat()函数获取了文件信息,既包括索引数字,也关联数组,其含义如下所示
数字下标 | 关联键名 | 说明 |
0 | dev | 设备名 |
1 | ino | 号码 |
2 | mode | inode 保护模式 |
3 | nlink | 被链接数目 |
4 | uid | 所有者的用户id |
5 | gid | 所有者的组 id |
6 | rdev | 设备类型,如果是inode 设备的话 |
7 | size | 文字大小的字节数 |
8 | atime | 上次访问时间(UNIX时间戳) |
9 | mtime | 上次修改时间(UNIX时间戳) |
10 | ctime | 上次改变时间(UNIX时间戳) |
11 | blksize | 系统文件LO的块大小 |
12 | blocks | 所占据的数字 |
注意:文件统计信息是以UNIX系统为基础的,而Windows下没有uid、gid、blksize和blocks等属性。所以在Windows下它们的值分别为默认值0或-1
*声明:内容来源于网络收集和整理,版权归原著所有,如来源信息有误或侵犯权益,请联系站长作修改和删除处理。