官术网_书友最值得收藏!

3.2 打開與關閉文件

其實,在Node程序中管理一個文件,最簡單、最常用的就是打開文件和關閉文件這兩個操作。文件系統fs模塊中提供了fs.open()與fs.openSync()兩個方法來完成打開文件的操作,相應地提供了fs.close()與fs.closeSync()兩個方法來完成關閉文件的操作。

下面我們分別通過同步方式打開文件和異步方式打開文件進行介紹。

1. 同步方式打開文件

以同步方式打開和關閉文件需要使用fs.openSync()方法和fs.closeSync()方法進行操作。下面是一個以同步方式打開文件的代碼實例。

【代碼3-1】(詳見源代碼目錄ch03-node-fs-open-sync.js文件)

【代碼分析】

? 為了測試文件打開與關閉的操作,先在代碼文件目錄下新建一個“txt”子目錄,然后在該子目錄中創建一個名稱為“openSync.txt”的文本文件。

? 第07~19行代碼主要用于參看文本文件的內容,其中第11~18行使用exec()方法打印輸出了“openSync.txt”文本文件的內容;另外,這段代碼中使用到的功能模塊會在后續章節中詳細介紹,讀者可先忽略。

? 第24行代碼通過require()指令引用了文件系統fs模塊。

? 第25行代碼和第29行代碼分別通過fs.openSync()與fs.closeSync()方法執行了文件打開與文件關閉的操作;同時,通過這兩個方法的返回值獲取了文本文件的文件描述符(fd)參數信息。

單擊工具欄中的“運行(Run)”命令按鈕,通過“運行、調試和控制臺輸出”查看信息輸出,如圖3.1所示。

圖3.1 打開與關閉文件的方法(同步方式)

如圖3.1所示,通過fs.openSync()方法與fs.closeSync()方法進行文件打開與文件關閉(同步版本)的操作均獲得了成功,同時還獲取了文件描述符參數信息(本例為數值3)。

2. 異步方式打開文件

上面介紹的是同步方式打開文件的方法,下面接著向讀者介紹異步方式打開文件的方法。異步方式打開文件和關閉文件需要使用fs.open()方法和fs.close()方法進行操作。下面看一個以異步方式打開文件的代碼實例。

【代碼3-2】(詳見源代碼目錄ch03-node-fs-open-async.js文件)

【代碼分析】

? 為了測試以異步方式打開與關閉文件的操作,繼續在之前創建的“txt”子目錄中創建一個名稱為“open.txt”的文本文件。

? 第23行代碼通過require()指令引用了文件系統fs模塊。

? 第27行代碼通過fs.open()方法執行了異步方式打開文件的操作,其中參數a表示以追加方式打開文件,如果文件不存在,就創建一個空文件;而第27~40行代碼定義了fs.open()方法的回調函數,參數fd為文件描述符。

? 因為fs.open()方法是以異步方式打開文件的,所以關閉文件的操作定義在了該回調函數中,具體就是在第35~39行代碼中,通過fs.close()方法執行了以異步方式關閉文件的操作。

單擊工具欄中的“運行(Run)”命令按鈕,通過“運行、調試和控制臺輸出”查看信息輸出,如圖3.2所示。

圖3.2 打開與關閉文件的方法(異步版本)

如圖3.2所示,通過fs.open()方法與fs.close()方法進行文件打開與關閉(異步版本)操作均獲得了成功,同時還獲取了文件描述符參數信息(本例為數值3)。

另外,對于操作系統內核而言,所有打開的文件都通過文件描述符引用。文件描述符是一個非負整數,當打開一個現有文件或創建一個新文件時,內核向進程返回文件描述符信息。

主站蜘蛛池模板: 英超| 闵行区| 随州市| 赤壁市| 双流县| 富川| 新郑市| 富源县| 丰原市| 凉城县| 沈丘县| 云安县| 波密县| 农安县| 张家港市| 天门市| 伊川县| 威远县| 香港 | 抚远县| 开阳县| 浠水县| 太谷县| 梧州市| 昌图县| 延长县| 灌云县| 淳化县| 太和县| 肃南| 安化县| 宁蒗| 南岸区| 阳春市| 凤山市| 且末县| 阿尔山市| 巧家县| 房产| 政和县| 和平县|