`

PHP文件操作

    博客分类:
  • PHP
 
阅读更多

 

<?php

header("Content-Type: text/html; charset=UTF-8");
$demo = new FileOprDemo();
$demo->file_stat($demo->file);
$demo->file_read($demo->file);
$demo->file_read2($demo->file);
$demo->file_read3($demo->file);
$demo->file_write("b.txt");
$demo->file_write2("b.txt");
$demo->file_copy("b.txt", "c.txt");
$demo->mk_dir("f:\\aaa\\bbb");
$demo->rm_dir("f:\\aaa\\bbb");
$demo->delete_file("f:\aaa\a.txt");

/**
 * PHP文件操作
 */
class FileOprDemo {

    public $file = "a.txt";

    /**
     * 查看文件信息
     * @param type $filename
     */
    function file_stat($filename) {
        echo "<p style=\"color:red;\">文件信息:</p>";
        if (file_exists($filename)) {
            if ($fp = fopen($filename, "r")) {
                $file_info = fstat($fp);
                echo "文件大小: " . $file_info["size"] . "<br/>";
                echo "文件上次访问时间: " . date("Y-m-d H:i:s", $file_info['mtime']);
                var_dump($file_info); //输出所有信息
            }
            fclose($fp);
        } else {
            echo $filename . "  不存在";
        }
        echo "<hr>";
    }

    /**
     * fread方式读取
     * @param type $filename
     */
    function file_read($filename) {
        echo "<p style=\"color:red;\">文件读取 fread:</p>";
        if ($fp = fopen($filename, "r")) {
            $fr = fread($fp, filesize($filename));
            $fr = str_replace("\n", "<br/>", $fr);
            echo $fr;
        }
        fclose($fp);
        echo "<hr>";
    }

    /**
     * file_get_contents方式读取
     * @param type $filename
     */
    function file_read2($filename) {
        echo "<p style=\"color:red;\">文件获取 file_get_contents:</p>";
        $fr = file_get_contents($filename);
        echo str_replace("\n", "<br/>", $fr);
        echo "<hr>";
    }

    /**
     * 分次读取
     * @param type $filename
     */
    function file_read3($filename) {
        echo "<p style=\"color:red;\">文件获取 fread(分次):</p>";
        $buffer = 5;
        $file_count = 0;
        $file_size = filesize($filename);
        if ($fp = fopen($filename, "r")) {
            while (!feof($fp) && $file_size > $file_count) {
                $data = fread($fp, $buffer);
                $file_count = $file_count + $buffer;
                echo str_replace("\n", "<br>", $data);
            }
        }
        echo "<hr>";
    }

    /**
     * 写入文件
     * @param type $filename
     */
    function file_write($filename) {
        echo "<p style=\"color:red;\">文件写入 fwrite:</p>";
        if ($fp = fopen($filename, "a+")) {
            $data = "新数据 " . date("Y-m-d H:i:s") . "\n";
            if (fwrite($fp, $data)) {
                echo "写入成功";
            }
        }
        fclose($fp);
        echo "<hr>";
    }

    /**
     * 文件写入  file_put_contents方式
     * @param type $filename
     */
    function file_write2($filename) {
        echo "<p style=\"color:red;\">文件写入 file_put_contents:</p>";
        $data = "新数据2 " . date("Y-m-d H:i:s") . "\n";
        file_put_contents($filename, $data, FILE_APPEND);
        echo "<hr>";
    }

    /**
     * 文件复制
     * @param type $filename
     * @param type $filenameD
     */
    function file_copy($filename, $filenameD) {
        echo "<p style=\"color:red;\">文件复制:</p>";
        if (copy($filename, $filenameD)) {
            echo "success";
        }
        echo "<hr>";
    }

    /**
     * 创建文件夹
     * @param type $path
     */
    function mk_dir($path) {
        echo "<p style=\"color:red;\">创建文件夹:</p>";
        if (!is_dir($path)) {
            if (mkdir($path, 0777, true)) {
                echo "创建文件夹成功";
            } else {
                echo "创建文件夹失败";
            }
        } else {
            echo "已存在";
        }
        echo "<hr>";
    }

    /**
     * 删除文件夹 rmdir只能删除空文件夹
     * @param type $path
     */
    function rm_dir($path) {
        echo "<p style=\"color:red;\">删除文件夹:</p>";
        if (is_dir($path)) {
            if (rmdir($path)) {
                echo "删除成功";
            } else {
                echo "删除失败";
            }
        }
        echo "<hr>";
    }

    /**
     * 删除文件
     * @param type $filename
     */
    function delete_file($filename) {
        echo "<p style=\"color:red;\">删除文件:</p>";
        if (is_file($filename)) {
            if (unlink($filename)) {
                echo "删除成功";
            } else {
                echo "删除失败";
            }
        } else {
            echo "文件不存在";
        }
        echo "<hr>";
    }

}

 

PHP fopen() 函数

定义和用法

fopen() 函数打开文件或者 URL。

如果打开失败,本函数返回 FALSE。

语法

fopen(filename,mode,include_path,context)
参数 描述
filename 必需。规定要打开的文件或 URL。
mode 必需。规定要求到该文件/流的访问类型。可能的值见下表。
include_path 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

mode 参数的可能的值

mode 说明
"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 以及以后的版本所支持,仅能用于本地文件。

说明

fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

对 context 的支持是 PHP 5.0.0 添加的。

提示和注释

注释:不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。 如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。

Windows 下提供了一个文本转换标记("t")可以透明地将 \n 转换为 \r\n。与此对应还可以使用 "b" 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 "b" 或者用 "t" 作为 mode 参数的最后一个字符。

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 \n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 "t"。在所有其它情况下使用 "b"。

在操作二进制文件时如果没有指定 "b" 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。

注释:为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 "b" 标记。

注释:再一次,为移植性考虑,强烈建议你重写那些依赖于 "t" 模式的代码使其使用正确的行结束符并改成 "b" 模式。

例子

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:password@example.com/test.txt","w");
?>

 

 

PHP fread() 函数

定义和用法

fread() 函数读取文件(可安全用于二进制文件)。

语法

fread(file,length)
参数 描述
file 必需。规定要读取打开文件。
length 必需。规定要读取的最大字节数。

说明

fread() 从文件指针 file 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。

返回所读取的字符串,如果出错返回 false。

提示和注释

提示:如果只是想将一个文件的内容读入到一个字符串中,请使用 file_get_contents(),它的性能比 fread() 好得多。

例子

例子 1

从文件中读取 10 个字节:

<?php
$file = fopen("test.txt","r");
fread($file,"10");
fclose($file);
?>

例子 2

读取整个文件:

<?php
$file = fopen("test.txt","r");
fread($file,filesize("test.txt"));
fclose($file);
?>

 

   PHP file_put_contents()函数

 PHP5+ 提供了一种方法 file_put_contents(file,data,mode,context),它将一个字符串写入文件,返回写入到文件内数据的字节数。和依次调用fopen(),fwrite() 以及 fclose() 功能一样,方便了使用。

 

参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode

可选。规定如何打开/写入文件。可能的值:

  • FILE_USE_INCLUDE_PATH:使用包含目录定义
  • FILE_APPEND:追加,防止被改写原文件内容
  • LOCK_EX:独占锁定方式

如果参数省略则默认为改写文件方式

context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。

 

 

  PHP 参考书中,指明了读文件方法 file_get_contents 的可用版本 (PHP 4 >= 4.3.0, PHP 5),PHP 5 进行了扩展, 5.0.0 添加了对 context 的支持。 5.1.0 添加了 offset 和 maxlen 参数。

  具体用法:file_get_contents ( file , flags , context , offset , maxlen)

 

 

参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
flags

可选。规定如何读取文件。可能的值:

  • FILE_USE_INCLUDE_PATH:使用包含目录定义
  • FILE_TEXT:文本格式内容。
  • FILE_BINARY:仅用于二进制格式。

如果参数省略则默认为FILE_BINARY

context

上下文

offset

可选。起始读位置,偏移。

maxlen

可选。读入长度。

 

 

 

PHP file_put_contents() 函数

定义和用法

file_put_contents() 函数把一个字符串写入文件中。

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

语法

file_put_contents(file,data,mode,context)
参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode

可选。规定如何打开/写入文件。可能的值:

  • FILE_USE_INCLUDE_PATH
  • FILE_APPEND
  • LOCK_EX
context

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。

说明

参数 data 可以是数组(但不能是多维数组)。

自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

对 context 参数的支持是 PHP 5.0.0 添加的。

返回值

该函数将返回写入到文件内数据的字节数。

提示和注释

提示:使用 FILE_APPEND 可避免删除文件中已有的内容。

注释:本函数可安全用于二进制对象。

例子

<?php
echo file_put_contents("test.txt","Hello World. Testing!");
?>

输出:

26

 

 

 

PHP mkdir() 函数

定义和用法

mkdir() 函数创建目录。

若成功,则返回 true,否则返回 false。

语法

mkdir(path,mode,recursive,context)
参数 描述
path 必需。规定要创建的目录的名称。
mode 必需。规定权限。默认是 0777。
recursive 必需。规定是否设置递归模式。
context 必需。规定文件句柄的环境。Context 是可修改流的行为的一套选项。

说明

mkdir() 尝试新建一个由 path 指定的目录。

默认的 mode 是 0777,意味着最大可能的访问权。

提示和注释

注释:mode 在 Windows 下被忽略。自 PHP 4.2.0 起成为可选项。

注释:对 context 的支持是 PHP 5.0.0 添加的。

注释:recursive 参数是 PHP 5.0.0 添加的。

例子

<?php
mkdir("testing");
?>

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    PHP 文件操作函数

    在PHP编程语言中,文件操作是至关重要的一个环节,它涉及到读取、写入、创建、删除、移动和复制文件等任务。这篇博客主要探讨了PHP中的文件操作函数,通过学习这些函数,开发者可以高效地处理服务器上的文件系统。...

    php文件操作类.zip

    在PHP编程中,文件操作是不可或缺的一部分,尤其是在构建动态网站或Web应用程序时。"php文件操作类.zip"可能包含一个自定义的PHP类库,专为处理文件系统操作而设计。这个类库可以帮助开发者更方便、高效地进行读取、...

    php文件操作类

    php文件系统操作类文件,可以对文件以及文件夹进行添加删除移动等操作。

    php文件操作类,十分方便

    php文件操作类,包括创建文件夹、递归复制、递归删除、递归移动

    漠岚php文件操作类.7z

    在PHP编程中,文件操作是不可或缺的一部分,它涵盖了读取、写入、创建、移动、复制和删除文件等众多功能。"漠岚php文件操作类"可能是一个专门为PHP设计的文件处理类库,旨在简化和规范化文件操作流程,提高代码的可...

    简单的php文件操作类.zip

    下面我们将深入探讨这个类的一些核心功能和相关的PHP文件操作知识。 首先,类库中的“创建目录”功能基于PHP内置函数`mkdir()`。`mkdir()`允许开发者创建一个新的目录,可以指定权限和是否递归创建多级目录。例如,...

    PHP实例开发源码—漠岚php文件操作管理程序.zip

    【PHP文件操作管理程序概述】 PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适合于Web开发,可以嵌入到HTML中使用。这个"PHP实例开发源码—漠岚php文件操作管理程序"是基于PHP设计的一个实用...

    一个PHP文件操作类(文件和文件夹创建,复制,移动和删除)

    在PHP编程中,文件操作是不可或缺的一部分,尤其是在构建动态网站或Web应用程序时。这个名为"08PHP文件操作类(文件和文件夹创建,复制,移动和删除)"的类库,提供了一套完整的解决方案来处理文件系统中的各种任务...

    基于PHP的漠岚php文件操作管理程序源码.zip

    【标题】基于PHP的漠岚php文件操作管理程序源码是一个专门为PHP开发人员设计的工具,用于方便地管理和操作服务器上的文件系统。该程序利用PHP的内置文件处理函数,为用户提供了一个直观的界面来执行常见的文件操作,...

    漠岚php文件操作类 0.1.2.zip

    "漠岚php文件操作类 0.1.2.zip" 是一个包含PHP源码的压缩包,主要用于实现基本的文件管理和操作功能。这个类库设计简单,提供了在线查看文件列表、删除文件等实用功能,是PHP开发中处理文件操作的一个实用工具。 在...

    php文件操作

    php 文件操作 相关开发文档 有关文件操作的安全问题

    关于PHP文件操作的简单介绍.pdf

    除了上述函数,还有一些其他有用的文件操作函数,例如`unlink()`用于删除文件,`file_put_contents()`可以写入文件内容,`file_get_contents()`则用于读取文件内容。在实际开发中,这些函数的组合使用可以帮助实现...

    php文件操作实例代码

    PHP中的文件操作涉及到一系列功能强大的函数,可以帮助开发者在服务器上创建、读取、写入或删除文件和目录。通过学习和实践这些文件操作函数,Web程序员可以有效地管理服务器上的文件系统,从而完成CMS系统、文件...

    php文件操作相关类.zip

    主要介绍了php文件操作相关类,实例分析了php针对文件与目录的创建、删除、复制、检查等操作技巧,需要的朋友可以参考下,检查目录或文件是否存在,可同时创建多级目录,将整个文件内容读出到一个字符串,将文件内容...

    php文件操作类---新建/删除/写入/查找目录文件/删除文件&目录

    php文件操作类,进行 新建/删除/写入/查找目录文件/删除文件&目录等一系列的操作,功能强大!

    PHP 简单文件操作类

    PHP 写的一个简单文件操作类,支持 PHP4 PHP5

    PHP 读写文件操作实例

    在PHP中,文件操作是日常开发中的重要组成部分,无论是在构建动态网站、处理用户上传的文件,还是存储和检索数据,文件系统交互都是必不可少的。本篇将通过一个实例来探讨如何使用PHP进行读写文件操作。 首先,我们...

    php多功能文件操作类.zip

    本类为文件操作类,实现了文件的建立,写入,删除,修改,复制,移动,创建目录,删除目录;列出目录里的文件等功能,路径后面别忘了加"/" ,向path路径下name文件写入content内容,bool为写入选项,值为1时,接着...

Global site tag (gtag.js) - Google Analytics