php操作文件

php处理文件的方式与C语言类似。

使用函数fopen()打开一个文件,函数有两个参数,第一个指明文件,第二个指明打开的方式。方式有r只读模式;r+可读可写方式;w只写方式,如果文件不存在,就创建;w+可写可读方式,如果文件就存在,就创建;a    追加方式 , 以只写方式打开文件,把文件指针指向文件末尾处,如果该文件不存在,则建立该文件;a+    追加 , 以可读可写方式打开文件,把文件指针指向文件末尾处,如果该文件不存在,则创建;b    二进制, 用于于其他模式进行连接。
如果文件打开成功返回该文件的指针,如果失败返回false。打开文件之后就需要对文件进行读取,fgets、fgetc、readfile都可以读取文件。fgets一次读取一行,fgetc一次读取一个字符,readfile一次读取整个文件。
php用fwrite来写文件,参数有两个,第一个指明文件的指针,第二部指明要写入的数据。

<html>
<body>
<?php
$file = fopen ("yeetrack.com/tem.txt","r");//只读方式
while(!feof($file))
{
echo fgets($file). "
";
}
fclose($file);
echo "  ";
$file = fopen("yeetrack.com/tem.txt","r");
while(!feof($file))
{
echo fgetc($file);
}
fclose($file);
                      
$file = fopen("yeetrack.com/tem.txt", "a+");//追加可读方式
$content = "hello world!";
echo $content;
fwrite($file,$content);
fclose($file);
                      
echo "";
$file = fopen("yeetrack.com/tem.txt","r");
while(!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>
</body>
</html>
<?php
    /**
     * @author youthflies
     */
    //以只写方法打开tem.txt文件
    $fileHandle = fopen("/home/youthflies/work/workspace/php/test/tem.txt","w") or die("打开文件失败!");
                 
    //fwrite()函数向tem.txt中写入文本
    fwrite($fileHandle, "Hello world");
    fclose($fileHandle);
                 
    /**
     * 还可以使用file_put_contents()函数向文件中写入文本
     * 该函数相当于依次调用了fopen()、fwrite()和fclose()函数
     * 该方法是以w的方法打开文件,故是覆盖性写入
     */
    file_put_contents("tem.txt", "Hello world, again!");
                 
    /**
     * 读取文件内容
     * fread()读取文件指定长度的内容
     * file_get_contents()将文件内容读入字符串
     * fgets()从打开的文件中最多读取一行文本
     * fgetc()从打开的文件中读取一个字符
     * file()把文件读入到数组中
     * readfile()把文件读入到缓冲区中
     * EOF表示文件结尾,php中提供feof()函数来判断文件指针是否到了末尾
     **/
    file_put_contents("tem.txt", "1hellon2worldn3again");
    $handle = fopen("tem.txt", "r") or die("文件打开失败");
    $string = fread($handle, 4);//从tem.txt中读取4个字节,即"1hel"
    echo $string . "<br />";
    fclose($handle);
                 
    $handle = fopen("tem.txt", "r") or die("文件打开失败");
    //一次性将文件全部读出
    $string = fread($handle, filesize("tem.txt"));
    echo $string . "<br />";
    fclose($handle);
                 
    //使用file_get_contents()函数将文件内容全部读入字符串,推荐使用这种方法
    $string = file_get_contents("tem.txt");
    echo $string . "<br />";
                 
    //使用fgets()函数一次从文件中最多读取一行文本,也可以指定读取的大小,默认大小为1024个字符
    $handle = fopen("tem.txt", "r") or die("文件打开失败");
    $string = fgets($handle);
    echo $string . "<br />";
    fclose($handle);
                 
    //与fgets()类似,fgetc()一次读取一个字符
    $handle = fopen("tem.txt", "r") or die("文件打开失败");
    while(($char=fgets($handle))!=false)
        echo $char;
    echo "<br />";
    fclose($handle);
                 
    //函数file()不需要fopen()打开文件,它将整个文件读取到数组中,每个元素对应文件中的一行
    print_r(file("tem.txt"));
                 
    echo "<br />";
    //readfile()函数可以读取整个文件,并且立刻输出到缓冲区,返回读取的字节数,同样不需要fopen文件
    readfile("tem.txt"); //直接输出到屏幕
                 
    //读取远程文件
    $remoteFile = fopen("http://www.baidu.com/", "r") or die ("打开远程文件失败");
    while(!feof($remoteFile))
        echo fgets($remoteFile, 1024);
    fclose($remoteFile);
                 
    //当然也可以读写ftp服务器上的文件,读写远程文件,可以网络原因导致超时,可以使用set_time_limit()函数设置超时时间
    $remoteFile = fopen("ftp://username:password@ftp.server.com/", "w+") or die ("打开远程文件失败");
    while(!feof($remoteFile))
        echo fgets($remoteFile, 1024);
    fclose($remoteFile);
                 
?>

下面是对文件指针进行操作的几个函数:    

$file1=fopen("docu.txt", "r") or die(" 文件打开失败");
    //输出文件指针的位置
    echo "文件指针:" . ftell($file1) ."<br />";
    //读取10个字节
    echo fread($file1, 10) . "<br />";
    //输出文件指针的位置
    echo "文件指针:" . ftell($file1) . "<br />";
    //将文件指针向后移动14个字节(由于utf-8编码中,汉字占3个字节,可能会出现半个汉字乱码的情况)
    fseek($file1, 14, SEEK_CUR);
    echo "文件指针:" . ftell($file1) . "<br />";
    echo fread($file1, 10) . "<br />";
    //rewind()函数可以将文件指针复位
    rewind($file1);
    echo "文件指针:" . ftell($file1) . "<br />";
    fclose($file1);

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)