返回介绍

8.1 读取文件

发布于 2025-01-30 22:11:34 字数 4015 浏览 0 评论 0 收藏 0

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

readfile 读取文件

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

int readfile ( string $文件名)

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

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

<?php
//linux 类的读取方式
readfile("/home/paul/test.txt");
//windows 类的读取方式
readfile("c:\\boot.ini");
?>

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

file_get_contents 打开文件

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

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

string file_get_contents ( string filename)

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

<?php

$filename = 'NoAlike.txt';

$filestring = file_get_contents($filename);
echo $filestring;
?>

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

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

<?php
//假设我们有一个多行的文件叫 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.'<br />';
}
?>

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

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.打开文件

<?php
//你可以创建一个 NoAlike.txt,以只读模式打开
$fp = fopen('NoAlike.txt', "r");

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

2.读取文件

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

//打开一个文件类型后,读取长度
$contents = fread($handle, 1024);
?>

3.关闭文件

<?php
$fp = fopen($filename, 'r');
$contents = fread($fp, 1024);
fclose($fp);
echo $contents;
?>

其他注意事项:

模式说明
twindows 下将\n 转为\r\n
b二进制打开模式

使用示例:

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可爱的很\n 哟');
fclose($fp);
echo $contents;
?>

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

Windows 下提供了一个文本转换标记('t')可以将 \n 转换为 \r\n。
与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文