>  기사  >  백엔드 개발  >  PHP 파일 작업 기능이란 무엇입니까? PHP에서 일반적으로 사용되는 파일 작업 기능 요약(코드 포함)

PHP 파일 작업 기능이란 무엇입니까? PHP에서 일반적으로 사용되는 파일 작업 기능 요약(코드 포함)

不言
不言원래의
2018-07-24 15:56:533716검색

PHP에는 다양한 종류의 파일 작업 함수가 있습니다. 오늘은 PHP에서 일반적으로 사용되는 파일 작업 함수를 공유하겠습니다. 이제 PHP 파일 작업에는 어떤 기능이 있는지 살펴보겠습니다.

1 PHP는 파일 이름을 가져옵니다.
basename - 경로의 파일 이름 부분을 반환합니다.

는 파일의 전체 경로가 포함된 문자열을 제공하고, 이 함수는 기본 파일 이름을 반환합니다. 파일 이름이 접미사로 끝나면 이 부분도 제거됩니다.

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

$path = "/home/cate/index/index2.php";
$file = basename($path);
echo $file.&#39;<br>&#39;; //index2.php
$file2 = basename($path,&#39;.php&#39;);
echo $file2;    //index2
$file3 = basename($path,&#39;2.php&#39;);
echo $file2;    //index

2 php는 디렉토리 이름

dirname을 가져옵니다 — 경로의 디렉토리 부분을 반환합니다. path )

파일의 전체 경로가 포함된 문자열이 주어지면 이 함수는 파일 이름을 제거한 후 디렉터리 이름을 반환합니다.

echo

dirname(

__FILE__

);__FILE__은 현재 파일의 경로를 가리킵니다. 이는 getcwd();

3 php가 경로를 가져옵니다 연관 배열

pathinfo - 반환 파일 경로 정보

pathinfo()

path 정보가 포함된 연관 배열을 반환합니다. 다음 배열 단위를 포함합니다: dirname, basename extension. 매개변수 옵션을 통해 반환할 단위를 지정할 수 있습니다. 여기에는

PATHINFO_DIRNAME

, PATHINFO_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 [, resources $zcontext ]] )

' r''r+''w''w+''a''a+''x' 호출이 실패하고 'x+' 호출이 실패하고

읽기 전용 모드로 열고 파일 포인터로 파일 헤더를 가리킵니다.

읽기-쓰기 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다.

쓰기 모드로 열고 파일 포인터를 파일 헤더로 가리키고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오.

읽기-쓰기 모드로 열고 파일 포인터를 파일 헤더로 가리키고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오.

쓰기 모드로 열고 파일 포인터를 파일 끝으로 가리킵니다. 파일이 존재하지 않으면 생성해 보십시오.

읽기-쓰기 모드로 열고 파일 포인터를 파일 끝으로 가리킵니다. 파일이 존재하지 않으면 파일을 만들어 보십시오.

파일 포인터를 파일 헤더로 지정하여 쓰기용으로 만들고 엽니다. 파일이 이미 존재하는 경우

fopen()
FALSE

를 반환하며 E_WARNING 수준 오류 메시지를 생성합니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. 이는 기본 open(2) 시스템 호출에 O_EXCL|O_CREAT 플래그를 지정하는 것과 같습니다. 이 옵션은 PHP 4.3.2 이상에서 지원되며 로컬 파일에만 사용할 수 있습니다.

읽기-쓰기 모드로 만들고 열어 파일 포인터를 파일 헤더로 지정합니다. 파일이 이미 존재하는 경우

fopen()
FALSE

를 반환하며 E_WARNING 수준 오류 메시지를 생성합니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. 이는 기본 open(2) 시스템 호출에 O_EXCL|O_CREAT 플래그를 지정하는 것과 같습니다. 이 옵션은 PHP 4.3.2 이상에서 지원되며 로컬 파일에만 사용할 수 있습니다.

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

D:\wamp\www\test\jsontest.php:3:resource(3stream)

<?php
    
$file = fopen(&#39;newtxt.txt&#39;,&#39;w&#39;)
or die
(&#39;无法打开文件&#39;);//不存在则自动创建
    $data = &#39;you are a coder!&#39;;
    fwrite($file,$data);
    $data = &#39;you are a MAN!&#39;;
    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 = &#39;doc.txt&#39;;
echo $filename.&#39;:&#39;.filesize($filename).&#39;bytes&#39;;

doc.txt:46bytes

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

float disk_free_space ( string $directory )

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

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

71001600000
186459181056

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

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

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

filemtime — 取得文件修改时间

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

<?php
$myfile = &#39;doc.txt&#39;;
$lines = file($myfile);
for($i=0,$len = count($lines);$i<$len;$i++){
    echo mb_convert_encoding($lines[$i], "UTF-8", "GBK").&#39;<br/>&#39;;
}

我是一个新手程序员,需要慢慢努力才能有所收获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 = &#39;doc.txt&#39;;
$encoding = mb_detect_encoding($myfile, 
array(&#39;GBK&#39;,&#39;UTF-16&#39;,&#39;UCS-2&#39;,&#39;UTF-8&#39;,&#39;BIG5&#39;,&#39;ASCII&#39;));
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(&#39;doc.txt&#39;,&#39;r&#39;);
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 — 关闭一个已打开的文件指针

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

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

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

bool file_exists ( string $filename )

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

12 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是一组选项,可以通过它修改文本属性

  • fopen() - 打开文件或者 URL

  • fwrite() - 写入文件(可安全用于二进制文件)

  • file_get_contents() - 将整个文件读入一个字符串

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

返回字节数22

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

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

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

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

if 
(file_exists(&#39;test.txt&#39;)) {
    file_put_contents(&#39;test.txt&#39;,&#39;contents&#39; );
}

相关推荐:

php文件操作的方法及实例详解

위 내용은 PHP 파일 작업 기능이란 무엇입니까? PHP에서 일반적으로 사용되는 파일 작업 기능 요약(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.