搜索
首页后端开发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
使用数据库存储会话的优点是什么?使用数据库存储会话的优点是什么?Apr 24, 2025 am 12:16 AM

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

您如何在PHP中实现自定义会话处理?您如何在PHP中实现自定义会话处理?Apr 24, 2025 am 12:16 AM

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

什么是会话ID?什么是会话ID?Apr 24, 2025 am 12:13 AM

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

您如何在无状态环境(例如API)中处理会议?您如何在无状态环境(例如API)中处理会议?Apr 24, 2025 am 12:12 AM

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。

您如何防止与会议有关的跨站点脚本(XSS)攻击?您如何防止与会议有关的跨站点脚本(XSS)攻击?Apr 23, 2025 am 12:16 AM

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

您如何优化PHP会话性能?您如何优化PHP会话性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

什么是session.gc_maxlifetime配置设置?什么是session.gc_maxlifetime配置设置?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

您如何在PHP中配置会话名?您如何在PHP中配置会话名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。

See all articles

热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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),