## 讀取文件內容
PHP具有豐富的文件操作函數,最簡單的讀取文件的函數為file_get_contents,可以將整個文件全部讀取到一個字符串中。
`$content = file_get_contents('./test.txt');`
file_get_contents也可以通過參數控制讀取內容的開始點以及長度。
`$content = file_get_contents('./test.txt', null, null, 100, 500);`
PHP也提供類似于C語言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以從文件指針中讀取一行,freads可以讀取指定長度的字符串。
~~~
$fp = fopen('./text.txt', 'rb');
while(!feof($fp)) {
echo fgets($fp); //讀取一行
}
fclose($fp);
~~~
~~~
$fp = fopen('./text.txt', 'rb');
$contents = '';
while(!feof($fp)) {
$contents .= fread($fp, 4096); //一次讀取4096個字符
}
fclose($fp);
~~~
使用fopen打開的文件,最好使用fclose關閉文件指針,以避免文件句柄被占用。
## 判斷文件是否存在
一般情況下在對文件進行操作的時候需要先判斷文件是否存在,PHP中常用來判斷文件存在的函數有兩個is_file與file_exists.
~~~
$filename = './test.txt';
if (file_exists($filename)) {
echo file_get_contents($filename);
}
~~~
如果只是判斷文件存在,使用file_exists就行,file_exists不僅可以判斷文件是否存在,同時也可以判斷目錄是否存在,從函數名可以看出,is_file是確切的判斷給定的路徑是否是一個文件。
~~~
$filename = './test.txt';
if (is_file($filename)) {
echo file_get_contents($filename);
}
~~~
更加精確的可以使用is_readable與is_writeable在文件是否存在的基礎上,判斷文件是否可讀與可寫。
~~~
$filename = './test.txt';
if (is_writeable($filename)) {
file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
echo file_get_contents($filename);
}
~~~
## 寫入內容到文件
與讀取文件對應,PHP寫文件也具有兩種方式,最簡單的方式是采用file_put_contents。
~~~
$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);
~~~
上例中,$data參數可以是一個一維數組,當$data是數組的時候,會自動的將數組連接起來,相當于$data=implode('', $data);
同樣的,PHP也支持類似C語言風格的操作方式,采用fwrite進行文件寫入。
~~~
$fp = fopen('./test.txt', 'w');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);
~~~
## 取得文件的修改時間
文件有很多元屬性,包括:文件的所有者、創建時間、修改時間、最后的訪問時間等。
~~~
fileowner:獲得文件的所有者
filectime:獲取文件的創建時間
filemtime:獲取文件的修改時間
fileatime:獲取文件的訪問時間
~~~
其中最常用的是文件的修改時間,通過文件的修改時間,可以判斷文件的時效性,經常用在靜態文件或者緩存數據的更新。
~~~
$mtime = filemtime($filename);
echo '修改時間:'.date('Y-m-d H:i:s', filemtime($filename));
~~~
## 取得文件的大小
通過filesize函數可以取得文件的大小,文件大小是以字節數表示的。
~~~
$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);
~~~
如果要轉換文件大小的單位,可以自己定義函數來實現。
~~~
function getsize($size, $format = 'kb') {
$p = 0;
if ($format == 'kb') {
$p = 1;
} elseif ($format == 'mb') {
$p = 2;
} elseif ($format == 'gb') {
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3);
}
$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);
$size = getsize($size, 'kb'); //進行單位轉換
echo $size.'kb';
~~~
值得注意的是,沒法通過簡單的函數來取得目錄的大小,目錄的大小是該目錄下所有子目錄以及文件大小的總和,因此需要通過遞歸的方法來循環計算目錄的大小。
## 刪除文件
跟Unix系統命令類似,PHP使用unlink函數進行文件刪除。
`unlink($filename);`
刪除文件夾使用rmdir函數,文件夾必須為空,如果不為空或者沒有權限則會提示失敗。
`rmdir($dir);`
如果文件夾中存在文件,可以先循環刪除目錄中的所有文件,然后再刪除該目錄,循環刪除可以使用glob函數遍歷所有文件。
~~~
foreach (glob("*") as $filename) {
unlink($filename);
}
~~~
- 前端工程師
- HTML
- 使用meta實現頁面的定時刷新或跳轉
- 表單相關
- 表單元素input、按鈕、文字完美垂直居中對齊方法
- CSS
- 相關工具網站
- JS
- jQuery
- 第1章 初始jQuery
- 環境搭建
- jQuery對象與DOM對象
- jQuery對象轉化成DOM對象
- DOM對象轉化成jQuery對象
- 第2章 jQuery選擇器
- id選擇器
- 類選擇器
- 元素選擇器
- 全選擇器(*選擇器)
- 層級選擇器
- 基本篩選選擇器
- 內容篩選選擇器
- 可見性篩選選擇器
- 屬性篩選選擇器
- 子元素篩選選擇器
- 表單元素選擇器
- 表單對象屬性篩選選擇器
- 特殊選擇器this
- 第3章 jQuery的屬性與樣式
- 元素的數據存儲
- 問題解決方案
- 解決innerHTML包含的js代碼不能被執行的問題
- webpackdoc
- 前端開發框架
- Bootstrap 3.3.6
- 起步
- 全局 CSS 樣式
- 概覽
- 柵格系統
- PHP
- PHP入門篇
- 基礎總結
- PHP環境變量$_SERVER和系統常量詳細說明
- PHP進階篇
- 數組
- 函數
- 類
- 字符串操作
- 正則表達式
- 會話控制
- 文件系統
- 日期和時間
- 圖形圖像操作
- PHP異常處理
- 數據庫操作
- WEB在線文件管理器
- PHP文件操作
- 獲取首層目錄信息
- 獲取文件信息
- 列表顯示文件及大小
- PHP與MySQL關系大揭秘
- PHP支持哪些數據庫
- 數據庫擴展
- 連接MySQL數據庫
- 執行MySQL查詢
- 插入新數據到MySQL中
- MVC架構模式分析與設計
- Smarty模版語法
- Smarty的基本語法
- Smarty的條件判斷語句
- Smarty的循環語句
- Smarty的文件引用
- Smarty類和對象賦值與使用
- Smarty函數的使用
- functions函數插件的定義和使用
- modifiers變量調節器插件的定義和使用
- block functions區塊函數插件的定義和使用
- Smarty實例
- MVC微型框架的建立
- 網絡摘抄
- PHPExcel如何讀取超大excel文件
- Composer
- Composer技巧
- PHP 開發者該知道的 5 個 Composer 小技巧
- composer常用命令
- Composer使用方法整理(Cy23)
- 利用Composer一步一步搭建自己的PHP框架
- ThinkPHP
- ThinkPHP中RBAC類詳解(一)
- 附:添加注釋版RBAC類源碼
- 常見問題
- 常見方法
- thinkphp 合并兩個字段組合成一個臨時字段concat函數
- ThinkPHP Where 條件中使用表達式
- 編程相關工具
- Eclipse
- Eclipse或Zendstudio漢化
- Zend studio
- Zendstudio快捷鍵
- Zend Studio實用快捷鍵一覽表
- Sublime text
- Sublime text快捷鍵
- 16 個 Sublime Text 快捷鍵
- Emmet的用法及相關語法
- VS Code
- 數據庫
- MySql
- 問題匯總
- mysql創建存儲過程失敗1307錯誤解決
- Mysql出現Field * doesn't have a default value解決辦法
- mysql:ADO連接mysql數據庫,驅動程序和ODBC數據源問題
- 自己如何正確獲取MYSQL的ADO連接字符串
- 網上摘抄
- mysql 存在更新 不存在插入
- Mysql字符串字段中是否包含某個字符串,用 find_in_set
- mysql字段類型對應的數字編號
- 5.7mysql group分組查詢錯誤問題
- mysql常用操作語句
- SQL2005
- SQL常見錯誤
- 使用 sp_change_users_login 修復產生的孤 立賬戶 & 還原中的孤立用戶
- ASP
- Url編碼解碼函數合集 含utf-8和gb2312
- 其他前端相關技巧
- 聯機查看 Office 文檔
- 服務器配置
- windows
- 服務器安裝
- XAMPP自帶TOMCAT插件可以支持php+java
- IIS
- iis7服務器,客戶端無法下載exe文件的解決之道
- Linux
- ubuntu
- Linux安裝JDK
- 輔助開發工具
- Git