PHP编程:介绍常见的文件操作方式_PHP教程
PHP处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题。
1.打开文件
<ol class="dp-c"> <li class="alt"><span><span>resource </span><span class="func">fopen</span><span> ( string filename, string mode [, bool use_include_path [, resource zcontext]] ) </span></span></li> <li> <span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(filename,mode)</span><span class="comment">//打开文件,返回代表此文件的资源的句柄</span><span> </span> </li> </ol>
文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有rr+ww+aa+xx+b
在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 rn 字符的奇怪问题。
为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
以下是几种打开文件的方式
<ol class="dp-c"> <li class="alt"><span><span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'log.txt'</span><span>,</span><span class="string">"rb"</span><span>); </span></span></li> <li> <span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'../log.txt'</span><span>,</span><span class="string">"rb"</span><span>); </span> </li> <li class="alt"> <span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">"http://www.runer.com.cn/default.htm"</span><span>,</span><span class="string">"rb"</span><span>);</span> </li> <li class="alt"><span>//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项 </span></li> </ol>
<ol class="dp-c"> <li class="alt"><span><span class="vars">$filename1</span><span> = </span><span class="string">"userinfo.txt"</span><span>;</span><span class="comment">//目录下或include_path中存在这个文件 </span><span> </span></span></li> <li> <span class="vars">$filename2</span><span> = </span><span class="string">"test.txt"</span><span>;</span><span class="comment">//目录下或include_path并不存在这个文件 </span><span> </span> </li> <li class="alt"> <span class="vars">$resource1</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename1</span><span>,</span><span class="string">"rb"</span><span>); </span> </li> <li> <span>@</span><span class="vars">$resource2</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"rb"</span><span>);</span><span class="comment">//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息 </span><span> </span> </li> <li class="alt"> <span class="keyword">if</span><span>(</span><span class="vars">$resource1</span><span>) </span> </li> <li> <span class="func">echo</span><span> </span><span class="string">"打开文件{$filename1}成功"</span><span>; </span> </li> <li class="alt"> <span class="keyword">if</span><span>(!@</span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"r"</span><span>)) </span> </li> <li> <span class="func">echo</span><span> </span><span class="string">"打开文件{$filename2}不成功"</span><span>; </span> </li> </ol>
输出结果:打开文件userinfo.txt成功
2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘
使用fclose()关闭文件,
<ol class="dp-c"><li class="alt"><span><span>bool fclose ( resource handle )</span><span class="comment">//关闭一个已打开的文件指针 </span><span> </span></span></li></ol>
3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据
string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果
如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止
string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 HTML 标记
fgetc()读取单个字符
fread()读取任意二进制数据
代码部分:
<ol class="dp-c"> <li class="alt"><span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span> (</span><span class="string">"test.jpg"</span><span>, </span><span class="string">"rb"</span><span>); </span></span></li> <li> <span class="vars">$c</span><span>; </span> </li> <li class="alt"> <span class="keyword">while</span><span> (!</span><span class="func">feof</span><span>(</span><span class="vars">$handle</span><span>)) { </span> </li> <li> <span class="vars">$contents</span><span> .= @</span><span class="func">fread</span><span>(</span><span class="vars">$handle</span><span>, 8192);</span><span class="comment">//循环读取并将其合并为一个大块文件 </span><span> </span> </li> <li class="alt"><span>} </span></li> <li> <span>fclose(</span><span class="vars">$handle</span><span>); </span> </li> </ol>
4.判断文件读取的状态
每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,根据fopen函数的mode参数
文件指针最初位于文件的开头(0),或者文件的末尾
feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)
filesize()函数返回文件的大小 5.写入文件
fwrite()函数执行文件写入
代码部分:
<ol class="dp-c"> <li class="alt"><span><span class="vars">$filename</span><span> = </span><span class="string">'test.txt'</span><span>; </span></span></li> <li> <span class="vars">$somec</span><span>; </span> </li> <li class="alt"> <span class="comment">// 首先我们要确定文件存在并且可写。 </span><span> </span> </li> <li> <span class="keyword">if</span><span> (</span><span class="func">is_writable</span><span>(</span><span class="vars">$filename</span><span>)) { </span> </li> <li class="alt"> <span class="comment">// 在这个例子里,我们将使用添加模式打开$filename, </span><span> </span> </li> <li> <span class="comment">// 因此,文件指针将会在文件的开头, </span><span> </span> </li> <li class="alt"> <span class="comment">// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。 </span><span> </span> </li> <li> <span class="keyword">if</span><span> (!</span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename</span><span>, </span><span class="string">'a'</span><span>)) { </span> </li> <li class="alt"> <span class="func">echo</span><span> </span><span class="string">"不能打开文件 $filename"</span><span>; </span> </li> <li> <span class="func">exit</span><span>; </span> </li> <li class="alt"><span>} </span></li> <li> <span class="comment">// 将$somecontent写入到我们打开的文件中。 </span><span> </span> </li> <li class="alt"> <span class="keyword">if</span><span> (fwrite(</span><span class="vars">$handle</span><span>, </span><span class="vars">$somecontent</span><span>) === FALSE) { </span> </li> <li> <span class="func">echo</span><span> </span><span class="string">"不能写入到文件 $filename"</span><span>; </span> </li> <li class="alt"> <span class="func">exit</span><span>; </span> </li> <li><span>} </span></li> <li class="alt"> <span class="func">echo</span><span> </span><span class="string">"成功地将 $somecontent 写入到文件$filename"</span><span>; </span> </li> <li> <span>fclose(</span><span class="vars">$handle</span><span>); </span> </li> <li class="alt"> <span>} </span><span class="keyword">else</span><span> { </span> </li> <li><span>} </span></li> <li class="alt"> <span class="func">echo</span><span> </span><span class="string">"文件 $filename 不可写"</span><span>; </span> </li> </ol>
输出结果:
成功地将 添加这些文字到文件 写入到文件test.txt
对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数
<ol class="dp-c"><li class="alt"><span><span class="vars">$result</span><span> = @fwrite(</span><span class="vars">$fp</span><span>,</span><span class="vars">$binary_data</span><span>,mb_strlen(</span><span class="vars">$binary_data</span><span>,</span><span class="string">'8bit'</span><span>)); </span></span></li></ol>
6.文件权限和其他信息
- is_readable()//判断文件是否可读
- is_writeable()//判断文件是否可写
- is_writable()//判断文件是否可写
- fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)
- file_exists()//是否存在这个文件
- fileowner()//判断文件所属用户
- filegroup()//判断文件所属组
7.删除和重命名文件
- unlink()//删除文件
- rename()//重命名文件
8.访问目录
目录访问建议使用前向斜线"/",兼容windows和unix系统
- basename()//返回不包括路径信息的文件名
- dirname()//返回文件名的目录部分
- realpath()//接受相对路径,返回文件的绝对路径
- pathinfo()//提取给定路径的目录名,基本文件名和扩展名
- opendir()//打开目录,返回资源句柄
- readdir()//读取目录项
- rewinddir()//将读取指针返回开头
- closedir()//关闭读取句柄
- chdir()//改变当前脚本执行期间的当前工作目录
- mkdir()//创建目录
- rmdir()删除目录
希望以上内容介绍的是八中常见的文件操作方式,对你有帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.
