<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] ## 【文件/目錄】相關函數 > [ 文件/目錄函數參考](http://php.net/manual/zh/refs.fileprocess.file.php) > ### 操作步驟 * opendir ==>(打開路徑) 得到一個資源 * readdir ==>(讀取資源) * rewinddir ==>重置目錄指針 * closedir ==>關閉目錄句柄(釋放資源) * scandir ==>瀏覽目錄 * disk_free_space -- 返回目錄中的可用空間 * disk_total_space -- 返回一個目錄的磁盤總大小 * ### 文件目錄處理相關函數 * filetype ==> 獲取文件類型 * file_exists ==>判斷文件或者目錄是否存在 * is_readable ==> 判斷給定文件名是否可讀 * is_writable ==> 判斷給定的文件名是否可寫 * is_executable ==> 判斷給定文件名是否可執行 * is_dir ==>判斷是否是個路徑 * is_link() ==> 判斷給定文件名是否為一個符號連接(軟連接)【可以理解為快捷方式】 * is_file ==>判斷是否是個文件 * mkdir ==>創建文件夾 * redir ==>刪除文件夾 * getcwd ==>獲取當前操作目錄 * chdir ==>改變當前操作目錄 * dirsize() ==>獲得目錄大小 * filesize() ==>獲得文件大小 * filectime() ==>獲取文件的**創建時間** * filemtime() ==>獲取文件的**修改時間** * fileatime() ==>獲取文件的**訪問時間** * stat() ==>獲取文件大部分屬性 ### PHP文件路徑相關函數 * basename ==> 返回路徑中的文件名部分 * pathinfo ==> 返回文件路徑的信息 * realpath ==> 返回規范化的絕對路徑名 ### 文件操作相關函數 * file_get_contents() ==>獲取文件的全部內容 * file_put_contents() ==>向某個文件寫入內容 FILE_APPEND 參數表示追加 * file() ==>把整個文件讀入一個數組,返回一個數組(數組中的每個元素都是文件中的一行數據) * copy() ==>拷貝 * unlink() ==>刪除文件 * rename() ==>重命名 * filetime() ==>獲取文件最后被修改的時間 * fileperms() ==>獲取文件的權限(返回一個八進制結果) ### 文件操作相關函數2 * fopen($filename, $mode [,$use_include_path, context]) ==> 打開文件或者 URL * feof() ==> 函數檢測是否已到達文件末尾 (eof)。 * fgets() ==> 讀取**單行**文件 * fgetc() ==> 讀取**單字符** * fread() ==> 讀取打開的文件。【fread($myfile, filesize("webdictionary.txt"));】 * fwrite($handle, $string [, $length]) ==> 用于寫入文件。 * fclose() ==> 函數關閉一個打開文件。 ``` <?php $file = fopen("E:/text.txt","r"); if ($file){ //接著采用while循環(后面語言結構語句中的循環結構會詳細介紹)一行行地讀取文件,然后輸出每行的文字 while (!feof($file)) { //判斷是否到最后一行 $line = fgets($file); //讀取一行文本 echo $line; //輸出一行文本 echo "<br />"; //換行 } } fclose($file);//關閉文件 ``` #### fopen($filename, $mode) $mode參數 1. **r** ===> 【讀】打開文件為只讀。文件指針在文件的開頭開始。 2. **r+** ===> 【從頭寫、讀】讀/寫。指針定位在文件的開頭,如果文件不存會報錯。 3. **w** ===> 【覆蓋寫】只寫。打開并清空文件的內容,如果文件不存在,則創建新文件。 4. **w+** ===> 【覆蓋寫、讀】讀/寫。打開并清空文件的內容,如果文件不存在,則創建新文件。 5. **a** ===> 【追加】追加。打開并將指針定位在文件尾,如果文件不存在,則創建新文件。 6. **a+** ===> 【讀/追加】讀/追加。打開并將指針定位在文件尾,如果文件不存在,則創建新文件。 7. **x** ===> 【只寫】只寫。創建新文件。如果文件以存在,則返回 FALSE。 8. **x+** ===> 【讀/寫】讀/寫。創建新文件。如果文件已存在,則返回 FALSE 和一個錯誤。 #### 使用fopen()打開中文名的文件 不能直接用fopen()來打開中文名的文件,這里,我們需要進行一些處理 ``` // 使用這行代碼即可解決,可以正常的打開文件 $file = fopen ( iconv ( 'UTF-8', 'GBK', 'E:/哈哈.txt' ), 'r' ); ``` #### fopen()的一些使用問題 1. fopen()函數的使用比起file_get_contents()函數麻煩一些。在大多數情況下,還是使用file_get_contents()函數要方便一些。file_get_contents()的使用方法 2. 在打開比較大的文件的時候,使用file_get_contents()函數會加大內存的占用率,這是非常不合適的。因此這種情況下,更建議使用fopen()函數。 3. 關于為什么每次使用fopen()函數,后面都要用fclose()函數關閉文件的問題。正常來說php的資源會在腳本結束的時候全部釋放掉,因此普遍的情況都可以省略fclose。不過如果你fopen了一個很大的文件,早點fclose會比較節省資源。也算是良好編碼習慣的一種。 ## 文件的屬性 ![](https://box.kancloud.cn/d048e1a1c3debde49e08853f786c11ee_1061x619.png) ![](https://box.kancloud.cn/fa024c89e457faffaa912c44eaef25ec_1076x596.png) ## 統計一個目錄下的文件和目錄的個數 ``` <?php $dirn = 0; //目錄數 $filen = 0; //文件數 //用來統計一個目錄下的文件和目錄的個數 function getdirnum($file) { global $dirn; global $filen; $dir = opendir($file); while($filename = readdir($dir)) { if($filename!="." && $filename !="..") { $filename = $file."/".$filename; if(is_dir($filename)) { echo '目錄---' . $filename . '<br>'; $dirn++; getdirnum($filename); //遞歸,就可以查看所有子目錄 } else { echo '文件---' . $filename . '<br>'; $filen++; } } } closedir($dir); } getdirnum(__DIR__); echo "目錄數為:{$dirn}<br>"; echo "文件數為:{$filen}<br>"; // 文件---F:\gitee\a_aliyun_code\demo/demo.php // 目錄---F:\gitee\a_aliyun_code\demo/新建文件夾 // 文件---F:\gitee\a_aliyun_code\demo/新建文件夾/新建文本文檔.txt // 目錄數為:1 // 文件數為:2 ``` ## 文件的鎖定機制 flock -- 輕便的咨詢文件鎖定 語法: bool flock ( int handle, int operation [, int &wouldblock] ) PHP 支持以咨詢方式(也就是說所有訪問程序必須使用同一方式鎖定, 否則它不會工作)鎖定全部文件的一種輕便方法。 handle 必須是一個已經打開的文件指針。 operation 可以是以下值之一: 要取得共享鎖定(讀取程序),將 operation 設為 LOCK_SH。 要取得獨占鎖定(寫入程序),將 operation 設為 LOCK_EX。 要釋放鎖定(無論共享或獨占),將 operation 設為 LOCK_UN。 如果你不希望 flock() 在鎖定時堵塞,則給 operation 加上 LOCK_NB。 如果成功則返回 TRUE,失敗則返回 FALSE。 ``` <?php /** * 簡單文件留言本 */ header("Content-Type:text/html;charset=utf8"); $filename = "message.txt"; fopen('aaa.txt', "a"); //如果用戶提交了, 就寫入文件, 按一定格式寫入 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"); if(flock($fp, LOCK_EX+LOCK_NB)) { fwrite($fp, $mess); flock($fp, LOCK_UN+LOCK_NB); } else { echo "寫入鎖定失敗!"; } fclose($fp); } function readmessage($filename) { // $mess = file_get_contents($filename); $mess = ""; $fp = fopen($filename, "r"); flock($fp, LOCK_SH+LOCK_NB); //讀鎖定 while(!feof($fp)) { $mess.=fread($fp, 1024); } flock($fp, LOCK_UN+LOCK_NB); //釋放 $mess = rtrim($mess, "[n]"); $arrmess = explode("[n]", $mess); foreach($arrmess as $m) { list($username, $dt ,$title, $content) = explode("||", $m); echo "<b>{$username}</b>, ".date("Y-m-d H:i").": <i>{$title}</i>, <u>{$content}</u><br><hr><br>"; } fclose($fp); } ?> <form action="demo.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> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看