先了解一下:
在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"); ?> |
运行结果: