7天php 看云,8.1 读取文件

我们在上一节当中,我们讲到了可以进行文件操作。而读取文件是一个最最常用的功能。

###readfile读取文件

那如何读取一个文件呢?我们先学一个函数。

> int readfile ( string $文件名)

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

下面的这一段代码中,只要传入文件名或者指定的文件路径就把文件读取出来了。

~~~

//linux类的读取方式

readfile("/home/paul/test.txt");

//windows类的读取方式

readfile("c:\\boot.ini");

?>

~~~

注意:上面的代码中windows的斜线是\斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。

###file_get_contents打开文件

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

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

> string file_get_contents ( string filename)

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

~~~

$filename = 'NoAlike.txt';

$filestring = file_get_contents($filename);

echo $filestring;

?>

~~~

上面的代码,就打开了一个文件,并且将文件当中的内容进行了输出。

我们来针对之前的知识把代码进行一下扩展。用一用之前的知识点。

~~~

//假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件

$filename = 'NoAlike.txt';

//打开这个文件,将文件内容赋值给$filestring

$filestring = file_get_contents($filename);

//因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组

$filearray = explode("\n", $filestring);

//把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。

while (list($key, $val) = each($filearray)) {

++$key;

$val = trim($val);

//用的单引号,单引号不解释变量进行了拼接而已

print 'Line' . $key .':'. $val.'
';

}

?>

~~~

上面,我们就把之前所学的知识进行了组合。

###fopen、fread、fclose操作读取文件

上面file_get_contents打开文件的方式简单、粗暴。下面的

> resource fopen ( string $文件名, string 模式)

> string fread ( resource $操作资源, int 读取长度)

> bool fclose ( resource $操作资源 )

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

> 1. 打开资源

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

> 3. 关闭资源

**fopen函数**

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

1. 文件打开的路径

2. 打开文件的模式

返回类型是一个资源类型,我们第一次遇到了之前基础类型的时候讲到的资源类型。

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

**fread函数**

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

**fclose函数**

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

了解完函数,后两个函数比较简单。而fopen函数的模式到底是什么,fopen的模式有下面几个,我们来讲一下fopen的模式:

| 模式 | 说明 |

| -- | -- |

| r | 只读方式打开,将文件指针指向文件头。 |

| r+ | 读写方式打开,将文件指针指向文件头。 |

| w | 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 |

| w+ | 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 |

| a | 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 |

| a+ | 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 |

| x | 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 |

| x+ | 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 |

接下来,我们只来学习r模式,下结课我们在将写入的时候再来讲讲其他几个模式。

我们先会读取文件了,才能很好的掌握写入文件。

1.打开文件

~~~

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

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

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

var_dump($fp);

?>

~~~

2.读取文件

~~~

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

//打开一个文件类型后,读取长度

$contents = fread($handle, 1024);

?>

~~~

3.关闭文件

~~~

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

$contents = fread($fp, 1024);

fclose($fp);

echo $contents;

?>

~~~

其他注意事项:

| 模式 |说明 |

| -- | -- |

| t | windows下将\n转为\r\n |

| b | 二进制打开模式 |

使用示例:

~~~

$fp = fopen($filename, 'ab');

$contents = fwrite($fp, '可爱的很\n哟');

fclose($fp);

echo $contents;

?>

~~~

说明:

实验无法让肉眼看到这个实验效果。大家记住有这个特点即可。

Windows 下提供了一个文本转换标记('t')可以将 \n 转换为 \r\n。

与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值