• PHP的文件操作常用函数


    PHP文件操作

    1 获得文件名:
    basename — 返回路径中的文件名部分

    给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。

    string basename ( string $path [, string $suffix ] )

    $path = "/home/cate/index/index2.php";
    $file = basename($path);
    echo $file.'<br>'; //index2.php

    $file2 = basename($path,'.php');
    echo $file2;    //index2

    $file3 = basename($path,'2.php');
    echo $file2;    //index

    2 获得目录名

    dirname — 返回路径中的目录部分

    string dirname ( string $path )

    给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。

    echo dirname(__FILE__);

    __FILE__指向当前文件所在的路径 等同于 getcwd();

    3 得到路径关联数组

    pathinfo — 返回文件路径的信息

    pathinfo() 返回一个关联数组包含有 path 的信息。包括以下的数组单元:dirnamebasename  extension

    可以通过参数 options 指定要返回哪些单元。它们包括:PATHINFO_DIRNAMEPATHINFO_BASENAME  PATHINFO_EXTENSION。默认是返回全部的单元。如果不是要求取得所有单元,则本函数返回字符串。

     

     

    <?php
    $path_parts = pathinfo("/home/cate/index.action.html");

    // /home/cate   文件目录
    echo $path_parts["dirname"] . "<br/>";          

    //  index.action.html  文件名
    echo $path_parts["basename"] . "<br/>";         

    //  html        扩展名
    echo $path_parts["extension"] . "<br/>";

    //直接获取扩展名       
    echo pathinfo("/home/cate/index.action.html", PATHINFO_EXTENSION);  

    4 fopen — 打开文件或者 URL

    resource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $zcontext ]] )

    'r'

    只读方式打开,将文件指针指向文件头。

    'r+'

    读写方式打开,将文件指针指向文件头。

    'w'

    写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

    'w+'

    读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

    'a'

    写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

    'a+'

    读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

    'x'

    创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

    'x+'

    创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

    <?php
        $handle = fopen("doc.txt", "r");
        var_dump($handle);

    D:wampwww estjsontest.php:3:resource(3stream)

    <?php
        $file = fopen('newtxt.txt','w')or die('无法打开文件');//不存在则自动创建
        $data = 'you are a coder!';
        fwrite($file,$data);
        $data = 'you are a MAN!';
        fwrite($file,$data);
        fclose($file);

     

     

     

    5  fstat — 通过已打开的文件指针取得文件信息

    array fstat ( resource $handle )

    获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。

    返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中 stat() 页面里。

    <?php

    // 打开文件
    $fp = fopen("doc.txt", "r");

    // 取得统计信息
    $fstat = fstat($fp);

    // 关闭文件
    fclose($fp);
    // 只显示关联数组部分
    //print_r(array_slice($fstat, 13)); 


    print_r($fstat); //获取一个文件信息数组包括索引和关联数组

    array_slice — 从数组中取出一段 返回数组

    array array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] )

    array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。

    如果 offset 非负,则序列将从 array 中的此偏移量开始。如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始。

    如果给出了 length 并且为正,则序列中将具有这么多的单元。如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方。如果省略,则序列将从 offset 开始一直到 array 的末端。

    <?php
    $input = array("a", "b", "c", "d", "e");

    $output = array_slice($input, 2);      // returns "c", "d", and "e"
    $output = array_slice($input, -2, 1);  // returns "d"
    $output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

    // note the differences in the array keys
    print_r(array_slice($input, 2, -1));
    print_r(array_slice($input, 2, -1, true));

    Array

    (

    [0] => c

    [1] => d

    )

    Array

    (

    [2] => c

    [3] => d

    )

     

    6 filesize — 取得文件大小

    int filesize ( string $filename )

    返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。

    <?php
    $filename = 'doc.txt';
    echo $filename.':'.filesize($filename).'bytes';

    doc.txt:46bytes

    7.disk_free_space — 返回目录中的可用空间

    float disk_free_space ( string $directory )

    给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。

    <?php
    echo disk_free_space("C:").'<br/>';
    echo disk_free_space("D:").'<br/>';
    echo disk_free_space("/");

    71001600000
    186459181056

    disk_total_space — 返回一个目录的磁盘总大小

    8 fileatime — 取得文件的上次访问时间

    filectime — 取得文件的 inode 修改时间

    filemtime — 取得文件修改时间

    9 file — 把整个文件读入一个数组中

    <?php
    $myfile = 'doc.txt';
    $lines = file($myfile);

    for($i=0,$len = count($lines);$i<$len;$i++){
        echo mb_convert_encoding($lines[$i], "UTF-8", "GBK").'<br/>';
    }

    我是一个新手程序员,需要慢慢努力才能有所收获1! 
    我是一个新手程序员,需要慢慢努力才能有所收获2! 
    我是一个新手程序员,需要慢慢努力才能有所收获3! 
    我是一个新手程序员,需要慢慢努力才能有所收获4! 
    我是一个新手程序员,需要慢慢努力才能有所收获5! 
    我是一个新手程序员,需要慢慢努力才能有所收获6!

    mb_convert_encoding($lines[$i], "UTF-8", "GBK")

    将每一行原来的WINDOWS下GBK格式的数据$lines[$i]转换为UTF-8格式

    string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

    <?php
    $myfile = 'doc.txt';
    $encoding = mb_detect_encoding($myfile, array('GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII'));
    echo $encoding;

    CP936 GBK

    mb_detect_encoding — 侦测字符集  第一个为文件或者路径 第二个为可能的字符集

    10 fgets — 从文件指针中读取一行

    string fgets ( int $handle [, int $length ] )

    handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

    出错时返回 FALSE

    <?php
    $handle = fopen('doc.txt','r');
    if ($handle){
        while (!feof($handle)){
            $data[] = fgets($handle,1024);
        }
        print_r($data);
        fclose($handle);
    }

     

    Array

    (

        [0] => 我是一个新手程序员,需要慢慢努力才能有所收获1!

     

        [1] => 我是一个新手程序员,需要慢慢努力才能有所收获2!

     

        [2] => 我是一个新手程序员,需要慢慢努力才能有所收获3!

     

        [3] => 我是一个新手程序员,需要慢慢努力才能有所收获4!

     

        [4] => 我是一个新手程序员,需要慢慢努力才能有所收获5!

     

        [5] => 我是一个新手程序员,需要慢慢努力才能有所收获6!

    )

    feof — 测试文件指针是否到了文件结束的位置

    如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。

    fclose — 关闭一个已打开的文件指针

    14 fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记
    fgets() 相同,只除了 fgetss 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

       可以用可选的第三个参数指定哪些标记不被去掉

    file_exists — 检查文件或目录是否存在

    bool file_exists ( string $filename )

    如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE

     15 file_put_contents — 将一个字符串写入文件

    int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

    和依次调用 fopen()fwrite() 以及 fclose() 功能一样。

    filename 要写入数据的文件名
    data  要写入的数据。类型可以是 stringarray(但不能为多维数组),或者是 stream 资源
    flags  可选,规定如何打开/写入文件。可能的值:
    FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径
    FILE_APPEND:在文件末尾以追加的方式写入数据
    LOCK_EX:对文件上锁
    context  可选,Context是一组选项,可以通过它修改文本属性

    <?php
    echo file_put_contents('doc.txt','你是一个程序员7',FILE_APPEND);

    返回字节数22

    如果文件不存在,则创建文件,相当于fopen()函数行为。

    如果文件存在,默认将清空文件内的内容,可设置 flags 参数值为 FILE_APPEND 以避免。

    file_put_contents 函数可安全用于二进制对象。

    如果对于确定已经存在的文件,最好进行一个判断

    if (file_exists('test.txt')) {
        file_put_contents('test.txt','contents' );
    }

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    HBase分布式集群搭建过程
    HBase基础知识
    HBase伪分布搭建
    搭建ZooKeeper集群环境
    hadoop集群环境搭建-hadoop之伪分布搭建环境
    乱序数组找出前面的都比他小后面的都比他大的数
    sikuli简介
    ZooKeeper 应用场景
    svmrank原理
    Latex汇总
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/5978034.html
Copyright © 2020-2023  润新知