# PHP 文件打開/讀取/讀取
**在本節中,我們向您講解如何在服務器上打開、讀取以及關閉文件。**
## PHP Open File - fopen()
打開文件的更好的方法是通過 fopen() 函數。此函數為您提供比 readfile() 函數更多的選項。
在課程中,我們將使用文本文件 "webdictionary.txt":
```
AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language
```
fopen() 的第一個參數包含被打開的文件名,第二個參數規定打開文件的模式。如果 fopen() 函數未能打開指定的文件,下面的例子會生成一段消息:
### 實例
```
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>
```
提示:我們接下來將學習 fread() 以及 fclose() 函數。
文件會以如下模式之一打開:
| 模式 | 描述 |
| --- | --- |
| r | 打開文件為只讀。文件指針在文件的開頭開始。 |
| w | 打開文件為只寫。刪除文件的內容或創建一個新的文件,如果它不存在。文件指針在文件的開頭開始。 |
| a | 打開文件為只寫。文件中的現有數據會被保留。文件指針在文件結尾開始。創建新的文件,如果文件不存在。 |
| x | 創建新文件為只寫。返回 FALSE 和錯誤,如果文件已存在。 |
| r+ | 打開文件為讀/寫、文件指針在文件開頭開始。 |
| w+ | 打開文件為讀/寫。刪除文件內容或創建新文件,如果它不存在。文件指針在文件開頭開始。 |
| a+ | 打開文件為讀/寫。文件中已有的數據會被保留。文件指針在文件結尾開始。創建新文件,如果它不存在。 |
| x+ | 創建新文件為讀/寫。返回 FALSE 和錯誤,如果文件已存在。 |
## PHP 讀取文件 - fread()
fread() 函數讀取打開的文件。
fread() 的第一個參數包含待讀取文件的文件名,第二個參數規定待讀取的最大字節數。
如下 PHP 代碼把 "webdictionary.txt" 文件讀至結尾:
```
fread($myfile,filesize("webdictionary.txt"));
```
## PHP 關閉文件 - fclose()
fclose() 函數用于關閉打開的文件。
注釋:用完文件后把它們全部關閉是一個良好的編程習慣。您并不想打開的文件占用您的服務器資源。
fclose() 需要待關閉文件的名稱(或者存有文件名的變量):
```
<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>
```
## PHP 讀取單行文件 - fgets()
fgets() 函數用于從文件讀取單行。
下例輸出 "webdictionary.txt" 文件的首行:
### 實例
```
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
```
注釋:調用 fgets() 函數之后,文件指針會移動到下一行。
## PHP 檢查 End-Of-File - feof()
feof() 函數檢查是否已到達 "end-of-file" (EOF)。
feof() 對于遍歷未知長度的數據很有用。
下例逐行讀取 "webdictionary.txt" 文件,直到 end-of-file:
### 實例
```
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出單行直到 end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
```
## PHP 讀取單字符 - fgetc()
fgetc() 函數用于從文件中讀取單個字符。
下例逐字符讀取 "webdictionary.txt" 文件,直到 end-of-file:
### 實例
```
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 輸出單字符直到 end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
```
注釋:在調用 fgetc() 函數之后,文件指針會移動到下一個字符。
## PHP Filesystem 參考手冊
如需完整的 PHP 文件系統參考手冊,請訪問 W3School 提供的 [PHP Filesystem 參考手冊](/php/php_ref_filesystem.asp "PHP Filesystem 函數")。
- PHP 基礎
- PHP 簡介
- PHP 安裝
- PHP 語法
- PHP 變量
- PHP 5 echo 和 print 語句
- PHP 數據類型
- PHP 字符串函數
- PHP 常量
- PHP 運算符
- PHP if...else...elseif 語句
- PHP Switch 語句
- PHP while 循環
- PHP for 循環
- PHP 函數
- PHP 數組
- PHP 數組排序
- PHP 全局變量 - 超全局變量
- PHP 魔術變量
- PHP 命名空間(namespace)
- PHP 表單
- PHP 表單處理
- PHP 表單驗證
- PHP 表單驗證 - 必填字段
- PHP 表單驗證 - 驗證 E-mail 和 URL
- PHP 表單驗證 - 完成表單實例
- PHP $_GET 變量
- PHP $_POST 變量
- PHP 高級
- PHP 多維數組
- PHP 日期和時間
- PHP Include 文件
- PHP 文件處理
- PHP 文件打開/讀取/讀取
- PHP 文件創建/寫入
- PHP 文件上傳
- PHP Cookies
- PHP Sessions
- PHP 發送電子郵件
- PHP 安全的電子郵件
- PHP 錯誤處理
- PHP 異常處理
- PHP 過濾器(Filter)
- PHP JSON
- PHP 數據庫
- PHP MySQL 簡介
- PHP 連接 MySQL
- PHP MySQL 創建數據庫
- PHP 創建 MySQL 表
- PHP MySQL 插入數據
- PHP MySQL 插入多條數據
- PHP MySQL 預處理語句
- PHP MySQL 讀取數據
- PHP MySQL Where 子句
- PHP MySQL Order By 關鍵詞
- PHP MySQL Update
- PHP MySQL Delete
- PHP 數據庫 ODBC
- PHP XML
- PHP XML Expat 解析器
- PHP XML DOM
- PHP SimpleXML
- PHP AJAX
- AJAX 簡介
- AJAX XMLHttpRequest
- PHP 和 AJAX 請求
- PHP 和 AJAX XML 實例
- PHP 和 AJAX MySQL 數據庫實例
- PHP 和 AJAX responseXML 實例
- PHP 和 AJAX Live Search
- PHP 和 AJAX RSS 閱讀器
- PHP 和 AJAX 投票
- 免責聲明