php file name,PHP文件处理

PHP 拥有的多种函数可供创建、读取、上传以及编辑文件。

注意:请谨慎操作文件!

当您操作文件时必须非常小心。如果您操作失误,可能会造成非常严重的破坏。

常见的错误是:

1.编辑错误的文件

2.被垃圾数据填满硬盘

3. 意外删除文件内容

PHP readfile()函数

readfile($文件名)

功能:传入一个文件路径,输出一个文件

例如 有个名为file.txt 的文件,内容如下Welcome in the PHP Chinese learning PHP

用readfile()函数读取此文件并写到输出流的 PHP 代码如下(如读取成功则 readfile() 函数返回字节数):

字节数:英文占一个字节  gbk编码中文占2个  utf-8中文占3个  空格和符号占1个<?php

echo readfile("D:WWW/item/file.txt");

?>

程序运行结果:Welcome in the PHP Chinese learning PHP39

file_get_contents打开文件

上面的是单纯打文件就直接输出了,有没有打开文件后,能够赋值给一个变量的操作方式呢。

PHP当然会提供这种方式。这个方式就是PHP打开文件并返回内容的方式之一,我们来看看函数:

file_get_contents ( string filename)

功能:传入一个文件或文件路径,打开这个文件返回文件的内容。文件的内容是一个字符串。

例如  有个file.txt 的文件,内容如下:I use the file_get_contents open

使用 file_get_contents 打开<?php

$fileName="file.txt";

$filestring = file_get_contents($fileName);

echo $filestring;

?>

程序运行结果:I use the file_get_contents open

fopen、fread、fclose操作读取文件

fopen($文件名, 模式)

fread($操作资源, 读取长度)

fclose ($操作资源 )

通过上面的函数我们来讲解资源类型的通常操作方式:

1.  打开资源

2.  使用相关函数进行操作

3.  关闭资源

fopen函数 fopen函数的功能是打开文件,参数主要有两个:

1.  文件打开的路径

2.  打开文件的模式

资源类型需要其他的函数来操作这个资源。所有的资源有打开就要有关闭。

fread函数 函数的功能的功能是读取打开的文件资源。读取指定长度的文件资源,读取一部份向后移动一部份。至到文件结尾。

fclose函数 fclose函数的功能是关闭资源。资源有打开就有关闭。

fopen的模式(下表):模式说明

r只读。在文件的开头开始。

r+读/写。在文件的开头开始。

w只写。打开并清空文件的内容;如果文件不存在,则创建新文件。

w+读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。a追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。

a+读/追加。通过向文件末尾写内容,来保持文件内容。

x只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

x+读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

twindows下将\n转为\r\nb二进制打开模式

1.打开文件

file.txt 文件的内容如下You're welcome<?php

//你可以创建一个file.txt,以只读模式打开

$fp = fopen('file.txt', "r");

//var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource

var_dump($fp);

?>

2.读取文件<?php

$fp = fopen('file.txt', "r");

//打开一个文件类型后,读取12个字节

$contents = fread($fp, 12);

?>

3,关闭文件<?php

$fp = fopen('file.txt', 'r');

$contents = fread($fp, 1024);

fclose($fp);

echo $contents;

?>

程序运行结果:You're welcome

file_put_contents和fwrite写入文件

file_put_contents( string $文件路径, string $写入数据])

功能:向指定的文件当中写入一个字符串,如果文件不存在则创建文件。返回的是写入的字节长度

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$data = "我是一个兵,来自老百姓";

$numbytes = file_put_contents('binggege.txt', $data);

if($numbytes){

echo '写入成功,我们读取看看结果试试:';

echo file_get_contents('binggege.txt');

}else{

echo '写入失败或者没有权限,注意检查';

}

?>

程序运行结果:写入成功,我们读取看看结果试试:我是一个兵,来自老百姓

fwrite( resource $文件资源变量, string $写入的字符串 [, int 长度])

注:fwrite的别名函数是fputs

我们上面试了r模式,只道是读取的时候使用,接下来我们用fwrite加上fopen中的w,写入模式来进行文件写入

实例

你可以试试新建个test.txt文件向里面写入内容。然后,可以试试把test.txt删除。看看有什么提示。<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$filename = 'test.txt';

$fp= fopen($filename, "w");

$len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');

fclose($fp);

print $len ."字节被写入了\n";

?>

程序运行结果:66字节被写入了

总结:

1.不论有没有新建都会打开文件重新写入

2.原有的文件内容会被覆盖掉

3.文件不存在会创建

对比一下以下几个模式的不同:模式说明

r只能读不能使用fwrite写

r+可操作读、写

w只可以写功能

w+即可读又可以写

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$filename = 'test.txt';

$fp= fopen($filename, "r");

$len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');

fclose($fp);

print $len .'字节被写入了\n';

?>

程序运行结果:0字节被写入了\n

我们发现只用 r 的话 写入是不成功的

创建临时文件

我们之前创建的文件都是永久文件。

而创建临时文件在我们平时的项目开发中也非常有用。创建临时文件的几个好处

1.    用完后即删除

2.    不需要去维护这个文件的删除状态

例如:我需要把A的文件内容转存B里面,把B的文件内容转存到C里面。

就跟现实生活中一样,我可以先用一个临时的瓶子把B的水装起来,然后把A的数据写入到B里面。把临时瓶子的水追加到C里面。

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

resourcetmpfile( )

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

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$handle = tmpfile();

//向里面写入了数据

$numbytes = fwrite($handle, '写入临时文件的内容');

//关闭临时文件,文件即被删除

fclose($handle);

echo  '向临时文件中写入了'.$numbytes . '个字节';

?>

程序运行结果:向临时文件中写入了27个字节

移动,拷贝,删除文件

重命名文件

rename($旧名,$新名);

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

实例<?php

$fileName1="text.txt";

$fileName2="text--1.txt";

rename($fileName1,$fileName2);

?>

上面的例子就是将一个text.txt的文件 改名为text--1.txt 的例子,你不妨可以试下

复制文件

copy(源文件,目标文件)

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

实例<?php

$filename = 'file.txt';  //旧文件名

$filename2 = 'copy-file.txt';  //新文件名

copy($filename, $filename2);    //修改名字。

?>

上面的例子是将一个文件名为 file.txt的文件,复制一份名为 copy-file.txt 的文件,内容一样。

删除文件

unlink(指定路径的文件)

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$filename = 'test.txt';

unlink($filename);

?>

上面的例子是将一个文件名为 test.txt的文件删除

文件常用的函数

filesize检测文件的大小

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$filename = 'file.txt';

echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';

?>

程序运行结果:

file.txt文件大小为: 14 bytes

其他操作文件的函数,读取文件函数名功能

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

fgets从文件指针中读取一行,读到最后返回false

fgetc从文件指针中读取一个字符,读到最后返回false

ftruncate将文件截断到给定的长度

我们通过一个实例来把上面几个函数都用到。

我们在text.txt文件中写入一批文件:abcdeefghijklk

opqrst

uvwxyz

12345678

fgetc每次读取一个<?php

//以增加的r模式打开

$fp = fopen('text.txt','r+');

//你分发现每次只读一个字符

echo  fgetc($fp) ."
";

//我要全部读取可以,读取一次将结果赋值一次给$string

while($string = fgetc($fp)){

echo $string;

}

?>

程序运行结果:a

bcdeefghijklk opqrst uvwxyz 12345678

fgets每次打开一行:<?php

//以增加的r模式打开

$fp = fopen('text.txt','r+');

//你分发现每次只读一个字符

echo  fgets($fp)."
";

echo  fgets($fp)."
";

echo  fgets($fp)."
";

echo  fgets($fp);

?>

程序运行结果:abcdeefghijklk

opqrst

uvwxyz

12345678

文件截取函数<?php

//打开我们上面的text.txt文件

$file = fopen("text.txt", "a+");

//你可以数数20个字有多长,看看是不是达到效果了

echo ftruncate($file,10);

fclose($file);

?>

运行一下程序,可以打开text.txt 文件,看一下是不是有20的字节

文件的时间函数

函数功能说明

filectime文件创建时间

filemtime文件修改时间

fileatime文件上次访问时间

实例<?php

header("Content-type:text/html;charset=utf-8");    //设置编码

$filename = 'text.txt';

if (file_exists($filename)) {

echo "$filename"."文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename))."
";

echo "$filename"."文件的创建时间是: " . date("Y-m-d H:i:s", filectime($filename))."
";

echo "$filename"."文件的修改时间是: " . date("Y-m-d H:i:s", filemtime($filename));

}

?>

程序运行结果:text.txt文件的上次访问时间是: 2016-09-13 17:44:40

text.txt文件的创建时间是: 2016-09-13 17:32:16

text.txt文件的修改时间是: 2016-09-13 17:44:55

目录处理函数

之前我们处理的全都是文件,那目录和文件夹怎么处理呢?

我们就来学习目录或者称为文件夹的处理相关函数。

处理文件夹的基本思想如下:

1.    读取某个路径的时候判断是否是文件夹

2.    是文件夹的话,打开指定文件夹,返回文件目录的资源变量

3.    使用readdir读取一次目录中的文件,目录指针向后偏移一次

4.    使用readdir读取到最后,没有可读的文件返回false

5.    关闭文件目录

我们来学习一下比较常用函数:

函数名功能

opendir打开文件夹,返回操作资源

readdir读取文件夹资源

is_dir判断是否是文件夹

closedir关闭文件夹操作资源filetype显示是文件夹还是文件,文件显示file,文件夹显示dir

实例<?php

//设置打开的目录是D盘

$dir = "D:/";

//判断是否是文件夹,是文件夹

if (is_dir($dir)) {

if ($dh = opendir($dir)) {

//读取一次向后移动一次文件夹指针

echo readdir($dh).'
';

echo readdir($dh).'
';

echo readdir($dh).'
';

echo readdir($dh).'
';

echo readdir($dh).'
';

echo readdir($dh).'
';

//读取到最后返回false

//关闭文件夹资源

closedir($dh);

}

}

?>

可以运行一下程序,看看是不是你电脑D盘的目录

判断文件的类型<?php

//设置打开的目录是D盘

$dir = "D:/";

//判断是否是文件夹,是文件夹

if (is_dir($dir)) {

if ($dh = opendir($dir)) {

//读取到最后返回false,停止循环

while (($file = readdir($dh)) !== false) {

echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "
";

}

closedir($dh);

}

}

?>

运行程序看看

文件路径函数

我们经常会遇到处理文件路径的情况。

例如:

1.    文件后缀需要取出来

2.    路径需要取出名字不取目录

3.    只需要取出路径名中的目录路径

4.    或者把网址中的各个部份进行解析取得独立值

5.    甚至是自己组成一个url出来

很多地方都需要用路径处理类的函数。

我们把常用的路径处理函数为大家做了标注,大家对着这个路径处理函数进行处理即可:函数名功能

pathinfo返回文件的各个组成部份

basename返回文件名

dirname文件目录部份

parse_url网址拆解成各部份http_build_query生成url 中的query字符串

http_build_url生成一个url

pathinfo

pathinfo( string $路径)

功能:传入文件路径返回文件的各个组成部份

实例<?php

header("Content-type:text/html;charset=utf-8");

$path_parts = pathinfo('D:/www/a.html');

echo '文件目录名:'.$path_parts['dirname']."
";

echo '文件全名:'.$path_parts['basename']."
";

echo '文件扩展名:'.$path_parts['extension']."
";

echo '不包含扩展的文件名:'.$path_parts['filename']."
";

?>

程序运行结果:文件目录名:D:/www

文件全名:a.html

文件扩展名:html

不包含扩展的文件名:a

basename

basename( string $路径[, string $suffix ])

功能:传入路径返回文件名

第一个参数传入路径。

第二个参数,指定我文件名到了指定字符停止。

实例<?php

echo "1: ".basename("d:/www/a.html", ".d")."
";

echo "2: ".basename("d:/www/include")."
";

echo "3: ".basename("d:/www/text.txt")."
";

?>

程序运行结果:1: a.html

2: include

3: text.txt

dirname

dirname(string $路径)

功能:返回文件路径的文件目录部份

实例<?php

$a=dirname(__FILE__);

echo$a;

?>

运行一下你的程序

parse_url

parse_url( string $路径 )

功能:将网址拆解成各个部份

实例<?php

$url = 'http://username:password@hostname:9090/path?arg=value#anchor';

var_dump(parse_url($url));

?>

程序运行结果:array(8) {

["scheme"]=>

string(4) "http"

["host"]=>

string(8) "hostname"

["port"]=>

int(9090)

["user"]=>

string(8) "username"

["pass"]=>

string(8) "password"

["path"]=>

string(5) "/path"

["query"]=>

string(9) "arg=value"

["fragment"]=>

string(6) "anchor"

}

http_build_query

http_build_query( mixed $需要处理的数据)

功能:生成url 中的query字符串

实例<?php

//定义一个关联数组

$data = [

'username'=>'liwenkai',

'area'=>'hubei',

'pwd'=>'123'

];

//生成query内容

echo http_build_query($data);

?>

程序运行结果:username=liwenkai&area=hubei&pwd=123

PHP Filesystem 参考手册

如需查看 PHP 文件系统函数的完整参考手册,请访问我们的PHP Filesystem 参考手册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值