## 目錄操作
~~~
$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";
}
?>
~~~