课时232 文件系统概述
//filetype这个函数不常用
echo filetype("../test");
echo "<br>";
echo filetype("../test/file.php")."<br>";
//is_xxx这类型函数比较常用
if(is_dir("../test")){
echo "目录";
}else{
echo "文件";
}
课时233 文件的属性
//获取文件属性的函数
function getfilePro($filename){
//文件是否存在
if(file_exists($filename)){
echo "文件存在<br>";
//获取文件的类型
getFileType($filename);
//获取文件的权限
if(is_readable($filename)){
echo "文件可读<br>";
}
if(is_writable($filename)){
echo "文件可写<br>";
}
if(is_executable($filename)){
echo "文件可执行<br>";
}
//获取文件的大小
if(is_dir($filename)){
echo "目录大小无法获取<br>";
}else{
echo "文件大小为".tosize(filesize($filename))."<br>";
}
//获取文件的修改时间
echo "文件的修改时间:".date("Y-m-d H:s:i",filemtime($filename))."<br>";
//获取文件的创建时间
echo "文件的创建时间:".date("Y-m-d H:s:i",filectime($filename))."<br>";
//获取文件的访问时间
echo "文件的访问时间:".date("Y-m-d H:s:i",fileatime($filename))."<br>";
}else{
echo "文件不存在<br>";
}
}
//获取文件的类型
function getFileType($filename){
switch(filetype($filename)){
case 'dir':
echo "这是一个目录<br>";
break;
case 'char':
echo "这是一个字符设置<br>";
break;
case 'block':
echo "这是一个块设备<br>";
break;
case 'file':
echo "这是一个文件<br>";
break;
case 'link':
echo "这是一个链接<br>";
break;
default:
echo "未知类型<br>";
break;
}
}
//文件大小的转换函数
function tosize($size){
$s = $size;
$dw = "";
if($size > pow(2,40)){
$s = $size/pow(2,40);
$dw = "TB";
}elseif($size > pow(2,30)){
$s = $size/pow(2,30);
$dw = "GB";
}elseif($size > pow(2,20)){
$s = $size/pow(2,20);
$dw = "MB";
}elseif($size > pow(2,10)){
$s = $size/pow(2,10);
$dw = "KB";
}else{
$s = $size;
$dw = "types";
}
return $s.$dw;
}
getfilePro("../test/file.php");
结果:
文件存在
这是一个文件
文件可读
文件可写
文件大小为910types
文件的修改时间:2014-12-12 07:03:57
文件的创建时间:2014-12-12 07:05:44
文件的访问时间:2014-12-12 07:05:44.
课时234 解析目录路径
/*
* windows: c:\app\www\aa.php
* linux : /usr/local/www
*
* 1.注意: "c:/app/www",所有的程序中不管是什么操作系统,全部都使用"/"代表路径分割符号(PHP程序中,APACHE配置文件中,PHP配置文件中)
* 2.windows ; "c:www\ss";"c:www/eee"
* linux : /usr/aaa:/etc/aaa
* PATH_SEPARATOR ,多文件的分隔符用此常量
* 3. ./是当前目录 ../是上一级目录 这都是相对目录
* c:/www/ae 是绝对路径
*
* 4.不同的根路径
* 一个是文档根路径,一个是系统根路径
*
*/
课时235 遍历目录
//foreach(glob("../test/*.php") as $filename){
// echo $filename."<br>";
//}
//打开目录资源
$dir = opendir("D:\wamp");
//不操作.和..
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = "D:/wamp/".$filename;
if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br>";
}
}
}
rewinddir($dir);
echo "****************<br>";
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = "D:/wamp/".$filename;
if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br>";
}
}
}
//关闭目录
closedir($dir);
结果:
目录:D:/wamp/alias
目录:D:/wamp/apps
文件:D:/wamp/barimage.bmp
目录:D:/wamp/bin
文件:D:/wamp/images_off.bmp
文件:D:/wamp/images_on.bmp
目录:D:/wamp/lang
文件:D:/wamp/license.txt
目录:D:/wamp/logs
目录:D:/wamp/scripts
目录:D:/wamp/tmp
目录:D:/wamp/tools
文件:D:/wamp/unins000.dat
文件:D:/wamp/unins000.exe
文件:D:/wamp/uninstall_services.bat
课时236 统计目录中的个数和大小
$total = disk_total_space("C:");
echo "C:总空间大小:".round($total/pow(2,30))."G<br>";
$free = disk_free_space("C:");
echo "C:可用空间大小:".round($free/pow(2,30))."G<br>";
$dirn = 0; //目录数
$filen = 0; //文件数
//用来统计一个目录下的文件和目录的个数
function GetDirNum($file){
global $dirn;
global $filen;
if(is_dir($file)){
$dir = opendir($file);
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = $file."/".$filename;
if(is_dir($filename)){
$dirn++;
GetDirNum($filename);
}else{
$filen++;
}
}
}
closedir($dir);
}else{
return 1;
}
}
GetDirNum("D:/wamp");
echo "目录数为:{$dirn}<br>";
echo "文件数为:{$filen}<br>";
echo "=====================================<br>";
function DirSize($file){
$size = 0;
$dir = opendir($file);
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = $file."/".$filename;
if(is_dir($filename)){
$size += DirSize($filename);
}else{
$size += filesize($filename);
}
}
}
closedir($dir);
return $size;
}
echo "目录大小:".round((DirSize("D:/wamp")/pow(1024,2)))."MB<br>";
结果:
C:总空间大小:200G
C:可用空间大小:165G
目录数为:494
文件数为:4484
=====================================
目录大小:452MB
课时237 建立与删除目录
rmdir 删除空目录
unlink 删除文件
课时238 复制、移动目录
/*
*
* 复制目录
* $dirsrc 源目录
* $dirto 目标目录
*/
//rename("Test","../test");
function copydir($dirsrc,$dirto){
//如果原来的文件存在, 判断是不是一个目录
if(file_exists($dirto)){
if(!is_dir($dirto)){
echo "目标不是一个目录,不能复制进去";
}
}else{
mkdir($dirto);
}
$dir = opendir($dirsrc);
while($filename = readdir($dir)){
if($filename !="." && $filename !=".."){
$srcfile = $dirsrc."/".$filename;
$tofile = $dirto."/".$filename;
if(is_dir($srcfile)){
copydir($srcfile,$tofile); //递归处理
}else{
copy($srcfile,$tofile);
}
}
}
}
课时239 文件的一些基本操作函数
//创建一个空文件
//touch("./sce.txt");
//复制文件
//copy("sce.txt","zaj.txt");
//移动或重新命名一个文件
//rename("zaj.txt","eee.txt");
//删除一个文件
//unlink("eee.txt");
//对文件内容的截取
//$fp = fopen("sce.txt","rw");
//ftruncate($fp,100);
//对文件内容的操作
//echo file_get_contents("sce.txt"); //获取文件内容
//file_put_contents("zaj.txt","wwwwwwwweirfjeijrflsdjfij"); //文件不存在时,创建文件并添加内容
//readfile("http://www.baidu.com");
课时240 文件的打开与关闭
* $fp = fopen("位置URL","打开模式RW");
*
* fclose($fp);
课时241 文件的内容操作
$fp = fopen("zaj.txt","a+");
//fwrite($fp,"www.baidu.com ");
//echo fgetc($fp); //一次只读一个字符.
/* while(!feof($fp)){ //feof除了出错或者到文件最后,才会返回true,
echo fgetc($fp);
}
*/
//echo fgets($fp); //一次读一行
//echo fread($fp,filesize("zaj.txt")); //第二个参数可以指定读多少个字符
echo ftell($fp)."<br>";
fseek($fp,4); //fseek在文件指针中定位
echo ftell($fp)."<br>";
echo fread($fp,5)."<br>";
//fwrite($fp,"hello world");
echo fread($fp,filesize("zaj.txt"));
fclose($fp);
课时242 简单留言版
<?php
$filename = "message.txt";
//如果用户提交了,就写入文件,按一定格式写入
if(isset($_POST['dosubmit'])){
//字段的分割使用||,行的分割使用[n]
$mess = "{$_POST['username']} ||".time()."|| {$_POST['title']} || {$_POST['content']}[n]";
writemessage($filename,$mess);
}
if(file_exists($filename)){
readmessage($filename);
}
function writemessage($filename,$mess){
$fp = fopen($filename,"a");
fwrite($fp,$mess);
fclose($fp);
}
function readmessage($filename){
$mess = file_get_contents($filename);
$mess = rtrim($mess,"[n]");
$arrmess = explode("[n]",$mess);
foreach($arrmess as $m){
list($username,$dt,$title,$content) = explode("||",$m);
echo "{$username},".date("Y-m-d H:i")."<i>{$title}</i><u>{$content}</u><br><hr><br>";
}
}
?>
<form action="liuyanban.php" method="post">
用户名:<input type="text" name="username" value="" /><br>
标  题:<input type="text" name="title" value="" /><br>
内  容:<textarea name="content" cols="40 rows="4"> </textarea><br>
<input type="submit" name="dosubmit" value="留言"><br>
</form>
结果:
1 ,2014-12-20 13:59 1 1
2 ,2014-12-20 13:59 3 4
课时244 文件上传的设置
- upform.php
<?php
/*
* 一定要用post模式, 还要再加enctype="multipart/form-data"
* 在file上要加个hidden
*
*/
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
name:<input type="text" name="username" value="" /><br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
up pic:<input type="file" name="pic" value="" /><br>
<input type="submit" name="dosubmit" value="上传">
</form>
- upload.php
<?php
/*
*
*
*/
echo '<pre>';
print_r($_POST);
print_r($_FILES);
echo '</pre>';
?>
结果:
Array ( [username] => aaaaa [MAX_FILE_SIZE] => 1000000 [dosubmit] => 上传 ) Array ( [pic] => Array ( [name] => dd121101195424-5.jpg [type] => image/pjpeg [tmp_name] => D:\wamp\tmp\php4200.tmp [error] => 0 [size] => 10650 ) )
课时245 文件上传的处理
- upload.php
<?php
/*
[pic] => Array
(
[name] => 11492849503ac00b2el.jpg
[type] => image/pjpeg
[tmp_name] => D:\wamp\tmp\phpC00C.tmp
[error] => 0
[size] => 468900
)
*/
//第一步:判断错误
if($_FILES['pic']['error'] > 0){
switch($_FILES['pic']['error']){
case 1:
echo "超出了规定大小<br>";
break;
case 2:
echo "超出了HTML表单大小<br>";
break;
case 3:
echo "只有部分上传<br>";
break;
case 4:
echo "没有上传任何文件<br>";
break;
default:
echo "未知错误<br>";
break;
}
exit;
}
//第二步:判断类型
$arr = explode(".",basename($_FILES['pic']['name']));
$hz = array_pop($arr);
$allowtype = array("gif","png","jpg","jpeg");
if(!in_array($hz,$allowtype)){
echo "上传类型不合法";
exit;
}else{
echo "上传类型正确";
}
//第三步:判断大小
$maxsize = 1000000;
if($_FILES['pic']['size']>$maxsize){
echo "超出大小";
exit;
}
//第四步:上传后的文件名一定要设置
$tmpfile = $_FILES['pic']['tmp_name'];
$srcname = "./uploads/".date("YmdHis").rand(100,999).".".$hz;
//将临时目录下的上传的文件,复制到制定的目录下,制定的名字就可以上传完成
if(move_uploaded_file($tmpfile,$srcname)){
echo "上传成功";
}else{
echo "上传失败";
}
?>
课时246 处理多个文件上传
<?php
$num = count($_FILES['pic']['name']);
for($i=0;$i<$num;$i++){
//第一步:判断错误
if($_FILES['pic']['error'][$i] > 0){
switch($_FILES['pic']['error'][$i]){
case 1:
echo "超出了规定大小<br>";
break;
case 2:
echo "超出了HTML表单大小<br>";
break;
case 3:
echo "只有部分上传<br>";
break;
case 4:
echo "没有上传任何文件<br>";
break;
default:
echo "未知错误<br>";
break;
}
exit;
}
//第二步:判断类型
$arr = explode(".",basename($_FILES['pic']['name'][$i]));
$hz = array_pop($arr);
$allowtype = array("gif","png","jpg","jpeg");
if(!in_array($hz,$allowtype)){
echo "上传类型不合法";
continue;
}else{
echo "上传类型正确<br>";
}
//第三步:判断大小
$maxsize = 1000000;
if($_FILES['pic']['size'][$i]>$maxsize){
echo "超出大小";
continue;
}
//第四步:上传后的文件名一定要设置
$tmpfile = $_FILES['pic']['tmp_name'][$i];
$srcname = "./uploads/".date("YmdHis").rand(100,999).".".$hz;
//将临时目录下的上传的文件,复制到制定的目录下,制定的名字就可以上传完成
if(move_uploaded_file($tmpfile,$srcname)){
echo "上传成功<br>";
}else{
echo "上传失败";
}
}
?>
课时247 文件上传类
课时248 文件下载