目錄
本篇文章主要介绍如何创建和修改文件内容,感兴趣的朋友参考下,希望可以对大家有所帮助。
file_put_contents写入文件
fwrite配合fopen进行写入操作
a模式和w模式的不同
x模式和w模式的不同
php 创建临时文件
php移动、拷贝和删除文件
php检测文件属性函数
php 文件常用函数和常量
filesize 检测文件的大小
文件的时间函数
php 文件锁处机制
首頁 後端開發 php教程 php 建立和修改文件內容

php 建立和修改文件內容

May 15, 2018 am 10:29 AM
php 內容 文件


本篇文章主要介绍如何创建和修改文件内容,感兴趣的朋友参考下,希望可以对大家有所帮助。

file_put_contents写入文件

我们先来学习第一种写入文件的方式:

int file_put_contents ( string $文件路径, string $写入数据])
登入後複製

功能:向指定的文件当中写入一个字符串(会清空原有的内容),如果文件不存在则创建文件。返回的是写入的字节长度

<?php
   $data = "在PHP中文网学好PHP,妹子票子不再话下!";

   $numbytes = file_put_contents(&#39;binggege.txt&#39;, $data); //如果文件不存在创建文件,并写入内容

   if($numbytes){       echo &#39;写入成功,我们读取看看结果试试:&#39;;       echo file_get_contents(&#39;binggege.txt&#39;);

   }else{       echo &#39;写入失败或者没有权限,注意检查&#39;;
   }?>
登入後複製

fwrite配合fopen进行写入操作

int fwrite ( resource $文件资源变量, string $写入的字符串 [, int 长度])
登入後複製
<?php
   $filename = &#39;test.txt&#39;;
   $fp= fopen($filename, "w");  //w是写入模式,文件不存在则创建文件写入。
   $len = fwrite($fp, &#39;我是一只来自北方的狼,却在南方冻成了狗&#39;);
   fclose($fp);   print $len .&#39;字节被写入了\n&#39;;?>
登入後複製

总结:1.不论有没有新建都会打开文件重新写入2.原有的文件内容会被覆盖掉3.文件不存在会创建

那我们来对比一下以下几个模式的不同:

模式 说明
r 只能读不能使用fwrite写
r+ 可操作读、写
w 只可以写功能
w+ 即可读又可以写

a模式和w模式的不同

同样是下面的这段代码,我们改为a模式。

<?php
   $filename = &#39;test.txt&#39;;
   $fp= fopen($filename, "a");
   $len = fwrite($fp,&#39;读大学迷茫了,PHP中文网学PHP给你希望&#39;);   echo  $len .&#39;字节被写入了\n&#39;;?>
登入後複製

打开网页执行这段代码,你会发现:每刷新一次,文件中就会多一段:读大学迷茫了,PHP中文网学PHP给你希望。

总结:

模式 总结
x 每次写入会干掉原有文件的内容,文件不存在都会创建
a 每次写入都会向文件的尾端追加内容

x模式和w模式的不同

这段代码我们再实验一次,改为x模式:

<?php
   $filename = &#39;test.txt&#39;;
   $fp= fopen($filename, "x");
   $len = fwrite($fp,&#39;读大学迷茫了,PHP中文网学PHP给你希望&#39;);   echo  $len .&#39;字节被写入了\n&#39;;?>
登入後複製

我们会发现:

1.文件存在的时候会报错2.如果把$filename 改成其他的文件名,就可以了。但是,再次刷新的时候又报错了3.x+ 是增强的x模式。读取时也可以使用。
登入後複製

php 创建临时文件

我们来学习一下这个函数:

resource tmpfile ( )
登入後複製

功能:创建一个临时文件,返回资源类型。关闭文件即被删除。

php移动、拷贝和删除文件

重命名文件

bool rename($旧名,$新名);
登入後複製

这个函数返回一个bool值,将旧的名字改为新的名字。

<?php
 //旧文件名$filename = &#39;test.txt&#39;;//新文件名$filename2 = &#39;reName.txt.&#39;;//修改名称rename($filename, $filename2);?>
登入後複製

复制文件

复制文件,就相当于是克隆技术,将一个原来的东西再克隆成一个新的东西。两个长得一模一样。

bool copy(源文件,目标文件)
登入後複製

功能:将指定路径的源文件,复制一份到目标文件的位置。

<?php

    //旧文件名
    $filename = &#39;copy.txt&#39;;    
    //新文件名
    $filename2 = &#39;copy2.txt&#39;;    
    //修改名字。
    copy($filename, $filename2);?>
登入後複製

注:1·复制的文件名不能和源文件同名,否则无法复制;2.复制文件名如果已经存在的话,会把源文件的内容copy一份替换复制文件的内容。

删除文件

删除文件就是将指定路径的一个文件删除,不过这个删除是直接删除。使用的是windows电脑,你在回收站看不到这个文件。

你只会发现,这个文件消失了。

bool unlink(指定路径的文件)
登入後複製
<?php
   $filename = &#39;test.txt&#39;;   if (unlink($filename)) {       echo  "删除文件成功 $filename!\n";
   } else {       echo "删除 $filename 失败!\n";
   }?>
登入後複製

php检测文件属性函数

bool file_exists ( $指定文件名或者文件路径)
功能:文件是否存在。bool is_readable ( $指定文件名或者文件路径)
功能:文件是否可读bool is_writeable ( $指定文件名或者文件路径)
功能:文件是否可写bool is_executable ( $指定文件名或者文件路径)
功能:文件是否可执行bool is_file ( $指定文件名或者文件路径)
功能:是否是文件bool is_dir ( $指定文件名或者文件路径)
功能:是否是目录void clearstatcache ( void )
功能:清楚文件的状态缓存
登入後複製

我们来讲第一个例子,文件锁。如果已经安装了,存在安装锁就提示已安装,否则就继续安装。

我们假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。

<?phpif(file_exists(&#39;install.lock&#39;)){   echo &#39;已安装,请不要再次进行安装&#39;;   exit;

}?>
登入後複製

php 文件常用函数和常量

|平台 |分割符|--|--||windows |
|类unix |/

我们会使用到一个常量:

DIRECTORY_SEPARATOR //代表反斜杠
登入後複製

由于FILE是PHP的预定义常量,所以没办法改变,如果需要让FILE也自适应操作系统。那么就是不要用FILE,可以用自定义的常量,并且把FILE处理一下,如下:

<?php//获取文件路劲,然后用DIRECTORY_SEPARATOR替换路劲中的&#39;/&#39;、&#39;\\&#39;;$_current_file = str_replace(array(&#39;/&#39;, &#39;\\&#39;), DIRECTORY_SEPARATOR, __FILE__);//重新字定义常量,输出格式化后的文件路劲define(&#39;__CUR_FILE__&#39;, $_current_file);echo __CUR_FILE__;      // D:\myphp\test\inidex.php?>
登入後複製

文件指针操作函数

rewind ( resource handle)
功能:指针回到开始处

fseek ( resource handle, int offset [, int from_where])
功能:文件指针向后移动指定字符
登入後複製
<?php> demo2.txt
    >     aaaaa
    >     bbbbb
    >     11111
    >     22222$fp = fopen('demo2.txt', 'r+');//读取10个字符, //读取前十个字节(空格算一个,换行算两个字节)echo fread($fp,10);//指针设置回到开始处    rewind($fp);    // aaaaa bbb//再读取10次看看输出的是什么echo '<br>';echo fread($fp,10);     // aaaaa bbbecho '<br>';//文件指针向后移动10个字符,(当前指针在最开始的位置)echo fseek($fp,10);     // fseek的返回值为0echo '<br>';//再看看文件中输出的是什么echo fread($fp,10);     // bb 11111 echo '<br>';
fclose($fp);?>
登入後複製

filesize 检测文件的大小

<?php$filename = &#39;demo.txt&#39;;echo $filename . &#39;文件大小为: &#39; . filesize($filename) . &#39; bytes&#39;;?>
登入後複製

其它操作文件的函数

其实还有一些其他操作文件的函数,读取文件

函数名 功能
file 把整个文件读入一个数组中
fgets 从文件指针中读取一行,读到最后返回false
fgetc 从文件指针中读取一个字符,读到最后返回false
ftruncate 将文件截断到给定的长度

fgetc

//以增加的r模式打开$fp = fopen('demo2.txt','r+');//你会发现每次只读一个字符echo  fgetc($fp) .'<br />'; //只读取一个字符//我要全部读取可以,读取一次将结果赋值一次给$stringwhile($string = fgetc($fp)){    echo $string;    //读取不到返回false}
登入後複製

fgets

//以增加的r模式打开$fp = fopen('demo.txt','r+');//你会发现每次读取一次打开一行echo  fgets($fp);echo  fgets($fp);echo  fgets($fp);echo  fgets($fp);   //读取不到返回false
登入後複製

ftruncate返回值为1 int

ftruncate($file , len);截取的长度大于文件内容长度,会用空字符填补
登入後複製
//打开我们上面的demo.txt文件$file = fopen("demo.txt", "a+");//你可以数数20个字有多长,看看是不是达到效果了echo ftruncate($file,20);
fclose($file);
登入後複製

文件的时间函数

函数 功能说明
filectime 文件创建时间
filemtime 文件修改时间
fileatime 文件上次访问时间
<?php$filename = &#39;demo.txt&#39;;    if (file_exists($filename)) {       echo &#39;$filename文件的上次访问时间是:&#39;  . date("Y-m-d H:i:s", fileatime($filename));       echo &#39;$filename文件的创建时间是: &#39; . date("Y-m-d H:i:s", filectime($filename));        echo &#39;$filename文件的修改时间是: &#39; . date("Y-m-d H:i:s", filemtime($filename));}        
?>
登入後複製

php 文件锁处机制

文件锁的用途:

若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。因此,这个时候我们引入锁机制。若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。

注意:加上了文件锁后要注意释放。

php 文件锁处机制文件锁机制一般在单一打开文件的时候根本看不到效果。这一块的学习有一点点抽象。

大家不要去思考怎么实现的呀?

为什么看不到效果呀?答:因为电脑的操作太快了,基本上是毫秒级的。所以这个实验其实是看不到效果的。

这一章了解文件锁的基本概念即可,熟悉文件锁函数和锁机制。

文件锁的用途:

若一个人在写入一个文件,另外一个人同时也打个了这个文件进行写入文件。这情况下,如果遇到一定的碰撞概率的话,不知道到底谁的操作为准。因此,这个时候我们引入锁机制。若用户A在写入或者读取这个文件的时候,将文件加上共享所。我可以读,其他人也可以读。但是,我如果这与的时候。我使用独占锁。这个文件归我了,你们都别动,除非我将文件锁进行释放。

注意:不论加上了文件锁后要注意释放。

我们来看看这个函数:

bool flock ( resource $handleFile , int $operation)
登入後複製

我们来看看锁类型:

锁类型 说明
LOCK_SH 取得共享锁定(读取的程序)
LOCK_EX 取得独占锁定(写入的程序)
LOCK_UN 释放锁定(无论共享或独占)

我们接下来把demo2.txt加上一个独占锁,进行写入操作。

    $fp = fopen("demo2.txt", "r+");    
    // 进行排它型锁定
    if (flock($fp, LOCK_EX)) {    
        echo '1';
    
        fwrite($fp, "文件这个时候被我独占了哟\n");    
        // 释放锁定
        flock($fp, LOCK_UN);
    } else {        echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
    }
    
    fclose($fp);
登入後複製

说明:

1.上例中我为了写入文件,把文件加上了独占锁。

2.如果我操作完成,写入完成后,解除掉了独占锁。

3.如果是在读取文件的时候,大家可加按照同样的处理思路加上共享锁。

相关推荐:

详解PHP修改文件权限函数chmod

php修改文件上传的大小

php修改数组键名的方法实例详解

以上是php 建立和修改文件內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles