跳轉到內容

程式設計基礎/檔案輸入和輸出

來自華夏公益教科書,開放書籍,開放世界

計算機檔案是在計算機儲存裝置上離散記錄資料的計算機資源。就像可以將文字寫入紙張一樣,也可以將資訊寫入計算機檔案。

計算機檔案有不同型別,專為不同的目的而設計。一個檔案可能被設計用於儲存圖片、書面訊息、影片、計算機程式或各種其他型別的資料。某些型別的檔案可以一次儲存多種型別的資訊。

檔名副檔名通常用於指示檔案內容的特徵或其預期用途。檔名副檔名通常用句點(句號)與檔名分隔,但在某些系統中它用空格分隔。[1]

透過使用計算機程式,人們可以開啟、讀取、更改和關閉計算機檔案。計算機檔案可以重新開啟、修改和複製任意次數。[2]

在計算機程式設計中,標準流是計算機程式在開始執行時與其環境之間預先連線的輸入和輸出通訊通道。三個輸入/輸出 (I/O) 連線稱為標準輸入 (stdin - 鍵盤)、標準輸出 (stdout - 最初是印表機) 和標準錯誤 (stderr - 監視器)。流可以重定向到其他裝置和/或檔案。在當前環境中,stdout 通常重定向到監視器。[3]

計算機檔案儲存在輔助儲存裝置上,並用於隨時間維護程式資料。大多數程式語言都有內建函式或庫來支援將檔案作為文字流進行處理。我們需要了解如何開啟、讀取、寫入和關閉文字檔案。以下解釋了檔案輸入/輸出術語

文字檔案 - 由 ASCII 字元集中的字元組成的檔案。文字檔案(也稱為 ASCII 文字檔案)包含字元資料。當我們建立文字檔案時,我們通常認為它由一系列行組成。每行都有幾個字元(包括空格、標點符號等),我們通常用回車符(ASCII 字元集中的一個字元)結束行。回車符也稱為換行符。您很可能已經熟悉 \n 的轉義程式碼,該程式碼在許多程式語言中用於在字面字串中指示回車符。

可以透過文字編輯器(記事本)或文字處理程式(Microsoft Word)建立由行組成的典型文字檔案。使用文字處理程式時,您通常需要在儲存時將輸出檔案指定為文字 (.txt)。大多數原始碼檔案是具有唯一副檔名的 ASCII 文字檔案;例如,C++ 使用 .cpp,C# 使用 .cs,Python 使用 .py 等等。因此,大多數編譯器/整合開發環境軟體包可用於建立 ASCII 文字檔案。

例如,就像我們在 PC 上透過右鍵單擊並建立新的文字文件來建立文字檔案一樣。在程式碼中也執行相同的操作。

檔名 - 名稱及其副檔名。大多數作業系統對檔名中可以使用哪些字元有限制。例如 Lab_05.txt

因為一些作業系統不允許空格,所以建議您在檔名中需要空格的地方使用下劃線。

路徑(檔案規範) - 檔案的位置及其檔名。Filespec 是檔案規範的縮寫。大多數作業系統有一套關於如何指定驅動器和目錄(或穿過多個目錄級別的路徑)以及檔名的規則。例如:C:\myfiles\cosc_1436\Lab_05.txt

因為一些作業系統不允許空格,所以建議您在建立資料夾或子目錄時需要空格的地方使用下劃線。

開啟 - 您的程式請求作業系統讓它訪問現有檔案或開啟新檔案。在大多數當前程式語言中,存在檔案資料型別,用於檔案處理。檔案變數將用於儲存作業系統分配給正在開啟的檔案的裝置令牌。開啟函式或方法用於檢索裝置令牌,並且通常至少需要兩個引數:路徑和模式(讀、寫、追加或其組合)。相應的虛擬碼將是

Declare File datafile

datafile = open(filespec, mode)

開啟函式提供來自作業系統的裝置令牌的返回值,它儲存在名為資料的變數中。

建議您確定是否已正確開啟檔案。作業系統通常無法開啟檔案的原因是檔案規範錯誤(拼寫錯誤或在某些作業系統中不區分大小寫)或者檔案未儲存在指定的位置。訪問儲存在網路或網際網路上的檔案可能會由於網路錯誤而失敗。

使用條件控制結構處理驗證檔案是否已正確開啟。該結構可以是 if-then-else 語句或 try-catch/try-except 錯誤處理程式,具體取決於所使用的程式語言。

讀取 - 將資料從已開啟的裝置移動到程式中定義的記憶體位置。例如

text = read(datafile)

text = datafile.read()

寫入 - 將資料從程式中定義的記憶體位置移動到已開啟的裝置。例如

write(datafile, text)

datafile.write(text)

關閉 - 您的程式請求作業系統釋放先前開啟的檔案。關閉檔案有兩個原因。首先,它釋放檔案並釋放相關的作業系統資源。其次,如果關閉為輸出開啟的檔案;它將清除作業系統的緩衝區並確保所有資料都物理儲存在輸出檔案中。例如

close(datafile)

datafile.close()

關鍵詞

[編輯 | 編輯原始碼]
關閉
您的程式請求作業系統釋放先前開啟的檔案。
裝置令牌
作業系統提供的鍵值,用於將裝置與您的程式關聯。
檔名
名稱及其副檔名。
檔案規範
檔案的位置及其檔名。
開啟
您的程式請求作業系統讓它訪問現有檔案或開啟新檔案。
讀取
將資料從已開啟的裝置移動到程式中定義的記憶體位置。
隨著時間的推移而提供的資料元素序列。[4]
stdin
標準輸入流,通常是鍵盤。[5]
stderr
標準輸出錯誤流,通常是監視器。[6]
stdout
標準輸出流,最初是印表機,但現在通常是監視器。[7]
文字檔案
由 ASCII 字元集中的字元組成的檔案。
寫入
將資料從程式中定義的記憶體位置移動到已開啟的裝置。

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書