PHP中filesystem函数

一、文件处理

1. 打开文件:resouce fopen()

2. 关闭文件:bool fclose()

3. 读写文件:

  • 读取整个文件:int readfile()、array file() 和 string file_get_contents( )
  • 读取一行数据:string fgets( ),如果有一个参数表示当前指针后面所有内容,如果有两个参数,第二个参数表示需要获取字节长度 和 string fgetss( )会过滤掉html和php标记
  • 读取一个字符:string fgetc( )
  • 读取指定长度的字串:string frend( )

4. 写文件

  • fwrite( ) 函数也称为fputs( ),它们用法相同。int fwrite( )
  • file_put_contents( ) 函数 int file_put_contents( )

5. 复制文件:bool copy( )

6. 重命名:bool rename( )

7. 删除文件:bool unlink( )

8. 文件最后一次被访问的时间:int fileatime( ),时间戳的方式返回。

9. 文件最后一次被修改的事件:int filemtime( ),时间戳的方式返回。

10. 取得文件大小(bytes):int filesize( )

11. 包含文件name的路径信息:array pathinfo(string name{,int options] );

12. 返回文件filename绝对路径:string realpath( )

13. 返回一个数组,包括文件的相关信息,如文件大小、最后修改时间等:array stat( )

在读写文件时,除了file()、readfile()等少数几个函数外,其他操作必须要先使用fopen()函数打开文件,最后用fclose()函数关闭文件。文件信息函数(如filesize、filemtime等)则都不需要打开文件,只要文件存在即可。

二、目录处理(目录是一种特殊的文件)

1. 打开目录:resource opendir( )

2. 关闭目录:void closedir( )

    is_dir( )函数判断当前路径是否为一个合法的目录。如果合法返回true,否则返回false。

3. 浏览目录:array scandir( );

4. 新建目录:bool mkdir( )

5. 删除目录:bool rmidr( )

6. 取得当前工作目录:string getcwd(void)

7. 改变当前目录:bool chdir( );

8. 返回目录中的可用空间(bytes),被检查的目录必须通过服务器的文件系统访问:float disk_free_space()

9. 返回目录的总空间大小:float disk_total_space()

10. 返回目录下一个文件的文件名(使用此函数时,目录必须是使用opendir()函数打开的):string readdir( )

11. 将指定的目录重新指定到目录的开头:void rewinddir( )

三、文件处理的高级应用

1. 远程文件的访问

PHP支持URL格式的文件调用,只要在php.ini中allow_url_fopen选项设为ON。

如:fopen('http://127.0.0.1/tm/sl/index.php', 'rb');

2. 文件指针

PHP可以实现文件指针的定位及查询,从而实现所需信息的快速查询。文件指针函数有rewind( )、fseek() 、feon() 和ftell()。

- rewind()函数:该函数将文件handle的指针设为文件流的开头

            语法:bool rewind( );如果将文件以追加("a")模式打开,写入文件的任何数据总是会被附加在文件已有内容的末尾,不论文件指针的位置在何处。

- fseek() 函数:该函数实现文件指针的定位

              语法:int fseek();

- feof() 函数:该函数判断文件指针是否在文件尾

               语法:bool feof( );

- ftell() 函数:该函数返回当前指针位置

                语法:int ftell( );

$filename = "test.txt";  
if(is_file($filename)){  // 判断文件是否存在
    echo "文字总字节数:".filesize($filename)."<br>";
    $fopen = fopen($filename, 'rb');
    echo "初始指针位置:".ftell($fopen)."<br>";
    fseek($fopen, 22);   //移动指针
    echo "使用fseek函数后指针位置:".ftell($fopen)."<br>";
    echo "输出当前指针后面的内容".fgets($fopen)."<br>";
    if(feof($fopen)){  //判断指针是否指向文件末尾
        echo "当前指针指向文件末尾:".ftell($fopen)."<br>"; //如果指针在末尾则输出指针位置
        rewind($fopen);
        echo "使用rewind函数后指针的位置:".ftell($fopen)."<br>";
        echo "输出前22个字节的内容:".fgets($fopen, 22);
        fclose($fopen);
    }else {
        echo "文件不存在";
    }

}

3. 锁定文件

在向一个文本文件写入内容时,需要先锁定该文件,以防止其他用户同时修改此文件内容,使用flock() 函数

语法:boll flock(resource handle, int operation)

operation的参数值
参数值 说明
LOCK_SH 取得共享锁定(读取文件)
LOCK_EX 取得独占锁定(写入文件)
LOCK_UN 释放锁定
LOCK_NB 防止flock() 在锁定时堵塞

四、上传文件

1. 配置php.ini文件

  • file_uploads:值为on,说明服务器支持文件上传,off则不支持。
  • upload_tep_dir:上传文件临时目录。如果想要指定为,可在这里设置,否则使用系统默认目录即可。
  • upload_max_filesize:服务器允许上传的文件的最大值,以MB为单位。系统默认为2MB。
  • max_execution_time:PHP中一个指令所能执行的最长时间,单位为秒。
  • memory_limit:PHP中一个指令所分配的内存空间,单位是MB。

2. 预定义变量$_FILES

预定义变量$_FILES元素
元素名 说明
$_FILES[filename][name] 存储了上传文件的文件名
$_FILES[filename][size] 存储了文件大小,单位为字节
$_FILES[filename][tmp_name] 文件上传时,首先在临时目录中被保存成一个临时文件。该变量为临时文件名
$_FILES[filename][type] 上传文件的类型
$_FILES[filename][error] 存储了上传文件的结果。如果值为0,说明上传成功。

3. 文件上传函数:将上传文件存储到指定的位置。成功返回true,否则返回false。

语法:bool move_uploaded_file(string filename, string destination)

参数:filename是上传文件的临时文件名,即$_FILES[tmp_name];

           destination是上传后保存的新的路径和名称

猜你喜欢

转载自blog.csdn.net/loren_123/article/details/81303819