PHP读取文件操作

 
先了解一下:
在php中, 全局变量(也就是在php中定义的变量)他的作用域是 不包括 内部定义函数的 ;也就是说函数内部的作用域取决于函数,那么函数外面的也就取决于全局变量,要想作用域既包括函数又包括整个文件,只能是超级全局变量(例如:$_POST或者是$_GET)
一、获取相对路径
在PHP中打开文件的当时常用的是使用相对路径的方式;利用 $DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];来获取相对路径;那么到底是什么意思呢?其实就是使用上面这句话得到服务器网站的根目录 ,如果不是使用phpStudy那么就是apache的hotches目录,也就是专门存放网站的目录;要是是phpstudy可以通过软件查看到。
那么为什么要使用相对路径? 如果使用绝对路径e:/php/myfile......来获取文件的话,那么一旦换了系统,不再e盘了你的服务器就不可以使用了;使用相对路径的好处就是只要那个文件在你存放网站的主目录下,不管在那个盘里面都可以正常使用。

二、如何通过上述的相对路径得到文件的路径以及文件指针
用: $fp=fopen("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","rb");的方式;注意我上述的写法,获取相对路径并不是根据根目录直接获取到你存放文件的目录mytxt,所以在获取相对路径其实就是得到你存放网站的目录,在这个网站的根目录下你存放的文件,还是需要一级一级的定位到你的文件。
上述通过使用fopen();的方式获取了文件指针。
三、对文件进行读
echo "<p>下面进行的是文件的读操作</p>";

$fp=fopen("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","rb");
if(!$fp)
{
echo "获取文件指针失败了!<br/>";
exit;
}
while(!feof($fp))
{
$results=fgets($fp);
echo $results."<br/>";
$location=ftell($fp);
echo "file location is :".$location."<br/>";
}
fclose($fp);
当然对文件的读操作:还有fgetss($fp)只是这个过滤了字符串中包含了PHP和HTML标记;
也可以使用readfile();一次性读取全部的文件。

/*注意要取得文件的大小的时候,不能用指针,那是因为当在里面
调用filesize方法的时候,其实这个时候指针是指着一个位置的,不是一个文件*/
$filelen=filesize("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt");
echo "文件的大小是:".$filelen."Bytes<br/>";
echo "用readfile读取文件:<br/>";
echo readfile("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt");

四、对文件进行写
对文件进行写操作常用的是fwrite($fp,$string);和file_put_contents(string filename,string data)
echo "<p>下面进行的是文件的写操作</p>";
$mystring="you are my wifi!\n";
echo "要写的数据是:".$mystring."<br/>";
$fp2=fopen("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","ab");
fwrite($fp2,$mystring);
完整代码:
<?php
$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
$date=date('H:i,jS F Y');

echo '我用相对路径得到文件的根目录是:'.$DOCUMENT_ROOT."<br/>";
echo "时间是:".$date."<br/>";

echo "<p>下面进行的是文件的读操作</p>";

$fp=fopen("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","rb");
if(!$fp)
{
 echo "获取文件指针失败了!<br/>";
 exit;
}
while(!feof($fp))
{
 $results=fgets($fp);
 echo $results."<br/>";
 $location=ftell($fp);
 echo "file location is :".$location."<br/>";
}
fclose($fp);
/*注意要取得文件的大小的时候,不能用指针,那是因为当在里面
调用filesize方法的时候,其实这个时候指针是指着一个位置的,不是一个文件*/
$filelen=filesize("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt");
echo "文件的大小是:".$filelen."Bytes<br/>";
echo "用readfile读取文件:<br/>";
echo readfile("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt");


echo "<p>下面进行的是文件的写操作</p>";
$mystring="you are my wifi!\n";
echo "要写的数据是:".$mystring."<br/>";
$fp2=fopen("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","ab");
fwrite($fp2,$mystring);

readfile("$DOCUMENT_ROOT/myfiletext/mytxt/text.txt","rb");
?>
运行结果:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值