• 微信号
目录

php基础

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

php文件操作概述

文件概述

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

文件流

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

所谓文件流,是指通过http协议post或get数据的过程中,传输一方直接以二进制的方式传送某个文件的内容,这样就想成一条文件流。接收方只要将接受的流内容直接写进文件即可。

流根数据的传输可分为输入流和输出流。输入流只数据从数据源到程序的路径。输出流是指数据从程序到数据源的路径

陵小宇博客-php文件操作,文件流

文件类型

计算机中的文件可以分为多种类型,如文本文件、图片、音频、视频、可执行的程序等。常见的文件类型

文件类型 描述
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>";
?>

运行结果

陵小宇博客-php文件操作filetype()函数获取文件类型

需要注意的是,分隔符在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文件操作file_exists()函数判断文件是否存在

文件属性

在操作文件过程中,经常需要获取文件的一些属性,如文件大小、权限和创建时间等等

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 "该文件不存在";
    }
?>

运行结果

陵小宇博客-php文件操作文件属性

使用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 "该文件不存在";
    }
?>

运行结果

陵小宇博客-php文件操作stat()函数文件属性

使用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