此篇實現了PHP對文件的系列操作,包括文件的讀寫和處理、文件的上傳、文件的下載。
1、簡單寫文件:file_put_contents("文件名","數據字符串");//寫數據到文件
2、簡單讀文件:$內容1=file_get_contents(“文件名”);//從文件中讀取內容到內容1中
//file_put_contents("ww.txt",file_get_contents("http://localhost:8080/ main.php"));//獲取網頁源碼
3、讀文件並輸出:readfile("ww.txt");//也可傳遞URL,內容自接輸出無需加echo等
4、讀文件以行為單位存入數組:$文件行數組=file(“文件名");
5、取目錄名:dirname($文件路徑字符串)//返回目錄字符串
6、獲取文件名:basename("字符串");//獲取文件名
7、創建目錄:mkdir(“目錄名字符串“)//創建的目錄必須是一個,存在會出現錯誤//第二個參數如:0777
8、刪除空目錄:rmdir("空目錄名");//返回bool
9、創建文件:touch("文件名")//返回bool
10、刪除文件:unlink("文件名或文件名路徑");
11、檢查文件或目錄是否存在:file_exists(“文件字符串”)//返回bool
12、基本判斷(內容必須存在):判斷是否是目錄【is_dir(“字符串”)】、 判斷是否是文件【is_file(“字符串”)】
13、獲取文件修改時間:filemtime("文件字符串");//返回時間戳
14、獲取文件大小:filesize("文件字符串");//返回字節數
15、文件重命名和移動:rename(“原文件”,"新文件");//返回bool
16、文件復制:copy("原文件","新文件");//返回bool
17、文件權限:【is_readable()】、【is_writable()】【is_executable()】//讀 寫 執行
18、目錄分隔符:DIRECTORY_SEPARATOR;//在liux系統為“/”,在win下為“\”
19、換行符:PHP_EOL//在liux系統為“\n”,在win下位“\r\n”
20、獲取磁盤總大小:echo disk_total_space("C:");//返回字節數
21、獲取磁盤可用空間總大小:echo disk_free_space("C:");//返回字節數
echo "C磁盤總大小:".round(disk_total_space("C:")/pow(2,30),2)."G";//打印以G為單位大小
22、目錄:當前目錄(點加斜杠)【 . / 】,上級目錄(點點加斜杠)【 . . / 】
23、打印目錄下文件:print_r(glob("dirdong/*php"));//獲取文件夾dirdong下的php文件,無到子目錄
24、遍歷文件夾:
1 $dir=opendir("./dirdong");//打開文件資源 2 while($fi=readdir($dir)){//循環 3 if(is_dir("./dirdong/".$fi)) echo "目錄:".$fi."<br/>"; 4 if(is_file("./dirdong/".$fi)) echo "文件:".$fi."<br/>"; 5 } 6 closedir($dir);//關閉文件資源
25、利用文件指針的方式讀寫文件:
1 /*打開模式: 2 3 r 只讀方式,文件指針處於開始 4 r+ 讀寫方式,文件指針處於開始,文件無報錯 5 w 只寫方式,文件指針處於開始 6 w+ 讀寫方式,文件指針處於開始,文件無則創建 7 a 寫追加方式,文件指針處於末尾,文件無則創建 8 a+ 讀寫方式,文件指針處於末尾,文件無則創建 9 rb wb 二進制讀寫方式 10 rt wt 文本方式讀寫方式 11 12 */ 13 $f=fopen("ww.txt","r+");//打開文件 ww.txt 資源 14 15 fseek($f,3);//從前往后移動文件指針3個字節 16 17 fseek($f,-2,SEEK_END);//從后往前移動文件指針2個字節 18 19 rewind($f);//將指針數組移動至開頭 20 21 echo ftell($f);//查看文件指針位置 22 23 //循環讀取文件內容 24 //while(!feof($f)){//判斷文件結尾 25 //echo fgetc($f);//只讀取一個字節 26 //} 27 28 //echo fgets($f);//一次讀一行 29 30 //echo fread($f,2);//讀取兩個字節 31 32 33 //fwrite($f,"32w東小東\nxxx");//寫內容 34 35 fclose($f);//關閉文件資源
26、文件鎖,防止同時操作文件造成數據絮亂:
1 flock($f,LOCK_EX);//設置寫鎖,返回bool 2 flock($f,LOCK_SH);//設置讀鎖,返回bool 3 //文件讀寫操作 4 flock($f,LOCK_UN);//釋放鎖,返回bool
27、文件上傳到服務器:
HTML:
1 <form action="wan.php" method="post" enctype="multipart/form-data"> 2 3 <input type="text" name="namexx"> 4 <br> 5 <input type="file" name="filexx"> 6 <br/> 7 <input type="submit" value="東小東上傳"> 8 </form>
PHP:
1 //error_reporting("E_ALL & ~ E_NOTICE"); 2 echo '<meta charset="utf-8">';//解決亂碼問題 3 //post數據,無文件數據 4 print_r($_POST); 5 //文件數據 名字,類型,零時目錄,大小等 6 print_r($_FILES["filexx"]); 7 //設置保存地址 8 $filepath="img/".$_POST["namexx"]; 9 //拷貝零時文件到保存目錄 10 if(move_uploaded_file($_FILES["filexx"]["tmp_name"],$filepath)){ 11 echo "上傳成功"; 12 }else{ 13 echo "上傳失敗"; 14 }
文件上傳錯誤值:
28、多文件上傳基本思路:利用文件數組
1 <input type="file" name="filexx[]"> 2 <input type="file" name="filexx[]">
29、文件下載:通過返回頭告訴客戶端此為附件即可
1 //告訴瀏覽器此文件為附件(可下載,不用瀏覽器解析) 2 header("Content-Disposition:attachment;filename=任意文件名1"); 3 //輸出內容 4 readfile("任意文件名1");