## 目录操作
~~~
$path='c:\demo\index.php';
~~~
* 解析目录
**basename**
~~~
echo basename($path);
~~~
返回路径中的文件名部分,包含后缀
* 获取路径目录
**dirname**
~~~
echo dirname($path);
~~~
**pathinfo()**
路径的数组,包含目录名,文件名,后缀名
~~~
pathinfo($path);
//返回
Array
(
[dirname] => c:\demo
[basename] => index.php
[extension] => php
[filename] => index
)
~~~
**realpath()**
获取文件的绝对路径
## 磁盘目录和文件计算
### filesize($path);
返回文件字节数
filesize($a)/1024 ,返回kb,round(filesize($a)/1024);
### disk_free_space
计算磁盘的可用空间
disk_free_space('C:')/1024/1024/1024 GB
### disk_total_space('c:');
磁盘总空间
文件最后访问时间
### fileatime($path)
文件最后改变时间(文件权限修改)
### filectime($path)
文件修改时间(内容修改)
### filemtime($path)
## 文件处理
文件处理3步骤:打开文件,读取文件,关闭文件
### fwirte()
文件写入
fwrite($fp,'123456');
~~~
$fp=fopen('a.txt','w');
$str="this is shchuanku";
fwrite($fp,$str,strlen($str));
~~~
只有一句话,不需要任何操作操作的时候,可以用:
### file_put_contents()
不需要用fopen打开文件,不需要用fclose关闭文件
`file_put_contents('a.txt', 'is a bok');`
### file_get_contents()
读取数据到缓存区
也就是:
`file_put_contents等同于fopen+fwirte+fclose`
**\r\n可以让文本换行**
#### readfile()
读取全部,具备echo功能,fpassthru()读取剩余的
~~~
echo readfile('a.txt');
~~~
#### fopen
~~~
r 打开文件为只读。文件指针在文件的开头开始。
w 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a 打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+ 打开文件为读/写、文件指针在文件开头开始。
w+ 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+ 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+ 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。
~~~
比readfile更好的是fopen,提供更多的参数
* fread()
* fgets() 读取单行
* fgetss()//读取行,并过滤HTML
* fpassthru(),输出指针后面剩余的全部内容,具备echo打印功能
* fclose()
* feof() 文件指针是否到达末尾,while循环配合fgets(),或者fgetsc()
* fgetc 从文件中读取单个字符
* file('a.txt') 按照每行分组存放,放在一个数组中
~~~
~~~
~~~
fopen();
第一个参数打开文件名
第二个参数打开模式
//打开文件
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
//读取文件
//读取单行,每运行一次函数,指针向下运行一行
echo fgets($myfile);
//第二个参数,读取的最大字节数,下面读取到文件结尾
echo fread($myfile,filesize("webdictionary.txt"));
//关闭文件,减少服务器资源
fclose($myfile);
~~~
### 查看文件或目录是否存在
文件存在的时候,才读取,否则报错
**file_exists();**
~~~
if(file_exists('a.txt')){
#code
}else{
echo :"文件不存在";
}
~~~
### 查看文件大小
filesize('a.txt');
### 删除文件
unlink('a.txt');
### rewind()
指针回到文件最开头
在fgetc的过程中可以使用
### ftell()
返回文件指针的位置
### fseek()
设定文件指针的位置
### flock()
锁定文件,读写文件的时候
flock($fp,LOCK_EX);
flock($fp,LOCK_UN);
### opendir()
### readdir()
### closedir()
###rmdir();//删除目录,文件通过unlink()删除
###rename()//重命名,目录和文件都能修改
~~~
$dir=opendir('d:');
while($file=readdir($dir)){
echo $file.'<br/>';
}
closedir($dir);
~~~
### 文件上传
~~~
//第一个参数是input name
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
~~~
~~~
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}
?>
~~~