• 微信号
  • 微信号
目录

PHP基础

您当前的位置:首页 > 我的笔记 > PHP基础>php文件操作概述

php文件操作概述

文件概述

在计算机中,各种数据、信息和程序都以文件的形式存储,文件主要作用是保存数据,它既可以保存文字,也可以保存图片、视频和声音等等。

文件流

文件在程序中以流的方式操作的。流是指数据在数据源(文件)和程序(内存)之间的经历的路径

所谓文件流,是指通过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