使用PHP创建一个在线文件库(1)相关知识了解

5 篇文章 0 订阅

项目目标

实现具有上传,查看,删除。下载功能的在线文件库。
第一阶段
文件操作:主要包括获取文件属性,打开文件,读取文件,删除文件等操作

文件属性

1.filetype函数:返回文件类型(在win下会返回file,dir,unkoown)
在这里插入图片描述
2.filesize函数:返回文件大小
在这里插入图片描述
3.filectime函数:返回文件创建时间的时间戳,通常需要格式化为日期格式
在这里插入图片描述
4.fileatime函数:返回文件上一次打开的时间戳
在这里插入图片描述
5.filemtime函数:返回文件上一次修改的时间戳
在这里插入图片描述
6.fileperms函数:返回文件权限,返回一个整数
在这里插入图片描述
将返回的整数转为类似于777,755的格式

<?php
decoct(fileperms($file) & 0777); // return "755" 
?>

7.is_writeable:判断文件是否可以读取,返回bool

8.is_readable:判断文件是否可以写入

9.stat函数:以数组的形式返回文件的全部信息
在这里插入图片描述

文件属性的练习

<?php
    $fn="testfile";//get file name
    echo $fn."<br>";
    echo 'filetype:',filetype($fn);//output file type
    echo "<br>".'文件创建时间';
    echo date("Y-m-d G:i:s",filectime($fn));//output file create date
    echo "<br><br>";
    if(is_readable($fn))//determine if the file is readable
        echo "文件可读<br>";
    else 
        echo "文件不可读<br>";
    if(is_writable($fn))//determine if the file is writeable
        echo "文件可写<br>";
    else
        echo '文件不可写<br>';
    echo '文件大小:'.filesize($fn)."字节<br>";//output filesize
    echo '文件上次访问时间'.date("Y-m-d G:i:s",fileatime($fn))."<br>";//output lastest time of access
    echo '文件上次修改时间'.date("Y-m-d G:i:s",filemtime($fn))."<br>";//output lastest time of edit
    echo '文件权限'.fileperms($fn)."------";//shoe file permisssions
    echo  printf("%o",fileperms($fn))."<br>";
    echo  "stat()以数组的形式返回文件属性<br>";
    //print_r(stat($fn));
    $file_attr=stat($fn);//put the array of file attr in file_attr
    $n=0;
    echo '<table border=1 width=100%>
            <col witdth=20%/>
            <col witdth=20%/>
            <col witdth=20%/>
            <col witdth=20%/>
            <col witdth=20%/>
            ';
    foreach ($file_attr as $K=>$v){
        $n++;
        if($n==1) echo '<tr>';
        echo "<td>stat[$K]=$v</td>";  
        if ($n==5){
            echo '</tr>';
            $n=0;
        } 
    }
?> 

得到
在这里插入图片描述

文件的打开与关闭

1.fopen函数:以指定的模式,打开文件,返回文件指针
在这里插入图片描述

  • mode:指定模式
  • use_include_path:bool,为真时,从include_path中搜索文件
    在这里插入图片描述
    2.fclose函数:关闭文件,文件使用后要记得关闭

写入文件

写入文件需要以有写入权限的模式打开文件
1.fwrite函数:向文件写入数据
fwrite是文件指针操作,每一次写入都会移动指针
在这里插入图片描述

写入文件的练习

<?php
    $fname = 'testfile';
    $mode = 'w';//已写入模式打开
    $handle = fopen($fname,$mode);
    $n = fwrite($handle,'PHP book');//返回写入的字符数
    echo "写入 $n 个字符<br>";
    fwrite($handle,"\n");
    $n = fwrite($handle,123);
    fwrite($handle,"\n");
    echo "写入 $n 个字符<br>";
    $n = fwrite($handle,12.34);
    fwrite($handle,"\n");
    echo "写入 $n 个字符<br>";
    $n = fwrite($handle,TRUE);//写入bool值会得到0和1
    fwrite($handle,"\n");
    echo "写入 $n 个字符<br>";
    $n = fwrite($handle,serialize(array(1,'ab')));
    //serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
    //这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
    echo "写入 $n 个字符<br>";
    fclose($handle);
    echo '文件操作结束';
?>

得到
在这里插入图片描述
testfile文件内容
在这里插入图片描述

读取文件

写入文件需要以有写入权限的模式打开文件
1.fread函数:读取指定长度的字符串
同样是文件指针操作,每次读取都会使指针移动
在这里插入图片描述
2.fgetc函数:读取一个字符

3.fgets函数:读取一行,可以指定读取字节数
在这里插入图片描述
4.fgetss函数:读取一行,可以指定字节数,但会过滤其中的HTML字符比如<br>什么的
在这里插入图片描述

文件指针操作

1.ftell函数:返回当前文件指针的位置
2.rewind函数:将指针位置返回至文件首位

读取文件与文件指针的练习

<?php
    $fname = 'testfile';
    $mode = 'r';//以读取模式打开
    $handle = fopen($fname,$mode);
    echo ftell($handle).'<br>';//输出打开文件时的指针位置
    echo fgetc($handle);//读取一个字符
    //此时文件的指针移动
    echo ftell($handle).'<br>';//输出读取字符后的指针位置
    echo fgets($handle);//读取一行
    //此时文件的指针移动
    echo '<br>';
    echo fgets($handle);//读取第二行
    echo '<br>';
    echo fgets($handle);//读取第三行
    echo '<br>';
    echo fgetss($handle);//读取第四行并且删除其中的HTML标记
    echo '<br>';
    echo fgetss($handle,225,'<h1>');//读取第五行
    //第二个参数用来获取读取的字符数
    //第三个参数指定fgetss取出html时的排除项
    echo '<br>';
    rewind($handle);//将指针倒退回文件首位
    echo ftell($handle).'<br>'; //输出重置指针后的位置
    echo fread($handle,50).'<br>';//输出指定长度的字符
    fclose($handle);
    echo '文件操作完成'
?>

得到
在这里插入图片描述

读取CSV 文件

CSV文件是指文件中的数据用分隔符(逗号,句号)等分隔。
1.fgetcsv函数:读取CSV文件并解析
在这里插入图片描述

读取CSV文件的练习

testcsv文件内容

你好;,好;;,不好

php代码

<?php
    echo "<h1>读取CSV文件</h1>";
    $fname ="testcsv";
    $mode = 'r';
    //读
    $handle =fopen($fname,$mode);
    $a = fgetcsv($handle,0,';');
    //返回一个数组
    foreach($a as $v) echo $v;
    fclose($handle)
    //但第二个参数指定为0,默认表示读取一行
?>

得到
在这里插入图片描述

其他文件操作

1.file_exists函数:测试指定的文件是否存在,返回bool
2.copy函数:复制文件

copy(file1,NEW_file2);

3.rename函数:移动或者重命名文件

rename(oldname,newname);//重命名
rename(path1/filename,path2/filename);//移动

4.unlink函数:删除指定文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值