php的文件编程

笔记

文件操作的分类
1.目录操作:用来存放文件的文件
2.文件操作:存放文件本身

----------------------------------
目录中的增删改查

创建
mkdir(路径名字):创建成功返回true,失败false
$res = @mkdir(); @为错误抑制符

删除
rmdir();

读取目录
opendir();打开资源,返回一个路径资源包含指定目录下的所有文件
readdir();从资源中读取指针所在位置的文件名,指针下移,直到移除

关闭
close();
------------------------------------
读取所有内容
遍历
------------------------------------
其他目录操作
1.dirname(一个路径):得到路径的上一层,获取路径的前缀

2.realpath(一个路径):得到真实路径

3.is_dir(一个路径):判断是否是路径

4.scandir():封装版的opendir\readdir\closedir
            获取指定路径下的所有文件信息
            以数组方式返回
----------------------------------------------
目录操作
递归遍历目录

指定目录下,将所有的文件和目录以及目录内部所有的内容输出出来

递归遍历目录
1.设计一个能够遍历一层文件的函数
2.找到递归点:遍历得到的文件是目录,调用当前函数
             得到的结果是文件名字不是目录
             需要排除.和..
             判断是否是路径
3.递归出口:没有发现任何子文件夹

-------------------------------------------
file_get_contents(路径):获取指定文件的所有内容

文件不存在会自动创建新文件但是目录不会创建
file_put_contents(路径,内容):指定内容写入到指定文件内

PHP4中文件操作
PHP4会依赖文件指针位置

1.fopen(文件路径)
2.fread(资源,长度)
3.fwrite(资源,内容)
4.fclose(资源)

------------------------------------------------
其他文件操作函数
is_file():判断文件是否正确
filesize():获取文件大小
file_exists():判断文件是否存在
unlink():取消文件名字与磁盘地址的链接(删除文件)
filemtime():获取文件最后一次修改时间
fseek():设置fopen打开文件的指针位置
fgetc():一次获取一个字符
fgets():一次获取一个字符串(默认一行)

----------------------------------------------------
文件下载
<a href='aa'>下载</a>
使用a标签下载的缺点:
    浏览器是发现如果解析不了才会下载
    如果能解析浏览器直接解析
    下载路径需要使用href属性写出来,爆出路径


php采用读取文件内容,以文件流的形式给浏览器
并且不会让浏览器解析

1.指定字符集
2.设置响应头
    文件返回类型:image/jpg  application/octem-stream
    返回文件计算方式 accept
    下载提示 content-disposition
    文件大小accept-length

字符集转码:
iconv(当前字符集,转换字符集,文件)

01.php

<?php


//创建目录,只在当前文件夹下创建文件夹
$res = @mkdir('open');
var_dump($res);

//删除目录
//@rmdir('open');

//读取目录,这里读取的是文件夹
$r = opendir('open');
//ar_dump($r);

//读取资源,这里读取的是文件
//echo readdir($r),'<br/>';

//循环遍历
while($file = readdir($r)){
	echo $file,'<br/>';
}

//关闭资源
closedir($r);


//其他函数
$dir = 'E:\phpstudy\WWW\PHP\GJ\10\open';
$dir1 = 'E:\phpstudy\WWW\PHP\GJ\10\open\1.txt';

//var_dump(dirname($dir),dirname($dir1));

//var_dump(realpath($dir),realpath($dir1));

//var_dump(is_dir($dir),is_dir($dir1));

echo "<prev>";
//以数组的方式打印目录下所有文件的信息
var_dump(scandir('open'))

?>

02.php

<?php

//遍历文件目录

//定义路径
$dir = 'WWW';

/*
能够访问指定路径下所有文件且判断出目录还是文件
@parem1 string $dir 指定路径
@parem2 int $level = 0 层级,默认顶层 
*/

function myscandir($dir,$level=0){
	//首先检验dir是不是路径
	if(!is_dir($dir)){
		die($dir.'<br/>');
	}
	//是路径的话我们获取文件夹下的所有文件保存在数组中
	$files = scandir($dir);
	//遍历数组也是遍历文件名并且依次打印出来
	foreach($files as $file){
		//所有文件名
		//echo $file."<br/>";

		//排除 ./..
		if($file == '.' || $file == '..') continue;//结束当前循环


		//构造对应的路径
		$file_dir = $dir.'\\'.$file;
		echo str_repeat("&nbsp",$level),$file_dir."<br/>";

		//判断路径
		if(is_dir($file_dir)){
			//递归点
			myscandir($file_dir,$level+10);
		}

	}
}

//测试
myscandir($dir);















?>

03.php

<?php
//获取所有文件以及写入内容
header('content-type:text/html;charset=utf-8');

//读取文件
$file = '01.txt';
$conn = @file_get_contents($file);
var_dump($conn);

//写入
$text = '123';
$res = file_put_contents($file, $text);
var_dump($res);

//PHP4操作

//打开
$f = fopen($file,'r');
var_dump($f);

//读取
$r = fread($f, 10);
echo $r;


//关闭
fclose($f);

//写入
$w = fopen('02.txt', 'w');
$e = fopen('03.txt', 'a');

fwrite($w, "asdadsad");
fwrite($e, "asdadsad");



//下载

header('Content-type:text/html;charset=utf-8');


//设定下载响应头
$file = '01.php';
//文件流形式
header('Content-type:application/octem-stream');
//计算方式
header('Accept-ranges:bytes');
//下载位置文件名
header('Content-disposition:attachment;filename='.$file);
//文件大小
header('Accept-length:'.filesize($file));//在这里进行判断,小文件php5大文件php4


//输出文件php5
echo file_get_contents($file);

//针对大文件下载或者网络延时高php4
$f = @fopen($file, 'r') or die();
while($row = fread($f, 1024)){
	echo $row;
}


//关闭资源
fclose($f);




?>

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值