IO與計算機存儲空間
IO(輸入/輸出)是計算機領域中指的是數據在計算機與外部設備之間的傳輸過程。存儲通常指的是計算機中用來保存數據的介質或設備,硬盤是存儲設備的一種,通常是指硬盤驅動器(Hard Disk Drive,HDD)或固態硬盤(Solid State Drive,SSD)。文件系統是操作系統用來組織和管理存儲設備上的文件的一種機制,它定義了文件的存儲方式、訪問方式以及文件和目錄之間的關系等。以下是對IO(輸入/輸出)、存儲、硬盤和文件系統的相關常識的總結:
-
輸入/輸出(IO):
- 輸入/輸出是計算機與外部環境之間的數據交換過程。
- 輸入指的是從外部設備(如鍵盤、鼠標、傳感器)向計算機傳輸數據。
- 輸出指的是從計算機向外部設備傳輸數據(如顯示器、打印機、揚聲器)。
- IO操作是計算機系統中常見且必不可少的部分,用于與用戶交互、數據存儲和通信等。
-
存儲:
- 存儲是指計算機用來保存數據和程序的設備或介質。
- 存儲可以分為臨時存儲和永久存儲兩種類型。
- 臨時存儲通常是指計算機內存(RAM),用于臨時保存正在運行的程序和數據。
- 永久存儲通常是指硬盤、固態硬盤(SSD)、光盤、閃存等設備,用于長期保存數據和程序。
-
硬盤:
- 硬盤是計算機存儲數據的主要設備之一。
- 硬盤通過旋轉的盤片和移動的讀寫頭來存儲和讀取數據。
- 硬盤分為機械硬盤(HDD)和固態硬盤(SSD)兩種類型。
- 機械硬盤使用機械運動和磁性存儲來存儲數據,而固態硬盤使用閃存芯片來存儲數據,速度更快且更可靠。
-
文件系統:
- 文件系統是計算機用來組織和管理存儲設備上的文件的一種機制。
- 文件系統負責管理文件的存儲方式、訪問方式以及文件和目錄之間的關系。
- 常見的文件系統包括FAT(File Allocation Table)、NTFS(New Technology File System)、ext4(Linux文件系統)、APFS(Apple File System)等。
- 文件系統還負責文件的命名、權限控制、磁盤空間管理等功能。
將所有IO設備都抽象成文件在計算機科學領域中是一個常見的做法,被稱為"一切皆文件"(Everything is a file)的思想,這樣我們就能實現接口的統一性了。
文件與文件路徑
-
文件:
- 文件是計算機中存儲數據的基本單位。
- 文件可以包含文本、圖像、視頻、音頻等各種類型的數據。
- 每個文件都有一個唯一的名稱,用于在文件系統中標識和訪問該文件。
- 文件通常由文件頭部、數據部分和文件尾部組成,文件頭部包含文件的元數據信息,如文件類型、大小、創建時間等。
-
文件路徑:
- 文件路徑是指定文件在文件系統中位置的一串字符。
- 文件路徑可以是絕對路徑或相對路徑。
- 絕對路徑從根目錄開始,一直指定到目標文件的位置,如
/home/user/Documents/example.txt
。 - 相對路徑是相對于當前工作目錄的路徑,如
Documents/example.txt
,它假定文件位于當前目錄下的Documents
子目錄中。 - 文件路徑可以包括目錄名、文件名和文件擴展名,用來唯一標識一個文件。
文件路徑的重要性在于它可以幫助操作系統準確定位到文件的位置,從而進行讀取、寫入、執行等操作。
不同操作系統使用不同的文件分隔符來在文件路徑中分隔目錄名稱。下面是一些常見操作系統的文件分隔符:
-
Windows:
- 文件分隔符:反斜杠(\),正斜杠(/)
- 示例:C:\Users\username\Documents\example.txt
-
Unix-like 系統(如 Linux、macOS 等):
- 文件分隔符:正斜杠(/)
- 示例:/home/username/Documents/example.txt
-
macOS 中的特殊情況:
- macOS 本質上是 Unix-like 系統,但它也支持一種特殊的文件路徑格式,使用冒號(:)作為文件分隔符,主要用于訪問磁盤卷(volume)上的文件。
- 示例:Macintosh HD:Users:username:Documents:example.txt
許多編程語言和應用程序會使用通用的文件分隔符,如正斜杠(/),以便在不同操作系統上運行時能夠正確解析文件路徑。在編寫跨平臺應用程序時,通常建議使用通用的文件分隔符,或者使用操作系統提供的路徑處理函數來自動處理文件分隔符的問題,從而確保程序在不同操作系統上的兼容性。
文件的樹形結構與目錄
文件系統中的文件通常以樹形結構組織,其中根目錄位于頂層,而子目錄和文件則位于樹的分支和葉子節點上。這種結構允許用戶組織和管理文件以及在文件系統中進行導航。
通過這種樹形結構,用戶可以方便地組織和管理文件系統中的文件和目錄,從根目錄出發,沿著目錄層次結構瀏覽和訪問文件。這種結構也提供了一種直觀的方式來描述文件系統中的文件位置和關系,使得用戶能夠輕松地定位和操作文件。
二進制文件與文本文件
文件可以分為兩種主要類型:二進制文件和文本文件。
-
根目錄:文件系統的根目錄是整個文件系統的頂層目錄,是樹形結構的起點。在絕大多數操作系統中,根目錄用一個斜杠(/)表示。
-
目錄(文件夾):目錄是文件系統中的一種特殊文件,用于組織和存儲其他文件和目錄。目錄可以包含文件和其他子目錄,形成樹形結構中的分支和節點。
-
文件路徑:文件路徑是描述文件在文件系統中位置的字符串。在樹形結構中,文件路徑沿著樹的分支從根目錄到目標文件或目錄的位置。絕對路徑從根目錄開始,逐級指定目錄的名稱;而相對路徑則是相對于當前目錄的路徑。
-
子目錄:子目錄是位于父目錄下面的目錄,也是樹形結構中的一個分支。子目錄可以包含文件和其他子目錄,從而形成更深層次的樹形結構。
-
葉子節點:在樹形結構中,沒有子目錄的目錄和沒有子文件的目錄被稱為葉子節點。葉子節點是樹的末端,不再分支出其他目錄或文件。
二進制文件:以二進制形式存儲的文件,其中包含了機器可讀的數據,通常是由編譯器、圖像編輯器、音頻編輯器等生成的。二進制文件的內容不以可打印字符的形式展現,而是按照特定的格式進行編碼。這些文件通常包括可執行文件(如可執行程序)、圖像文件(如JPEG、PNG)、音頻文件(如MP3、WAV)以及。docx文件(富文本文件)等。
文本文件:以純文本形式存儲的文件,其中包含了人類可讀的字符,通常是由文本編輯器、辦公軟件等生成的。文本文件的內容由字符集編碼,常見的編碼包括ASCII、UTF-8、UTF-16等。文本文件可以包含普通文本、代碼、配置文件等。常見的文本文件包括.txt(純文本文件)、.html(HTML網頁文件)、.css(樣式表文件)、.java(Java源代碼文件)等。
二進制文件和文本文件在處理方式上有所不同。文本文件可以直接用文本編輯器打開和編輯,而二進制文件通常需要特定的程序或工具進行處理。在計算機系統中,操作系統和應用程序通常能夠區分并處理這兩種類型的文件。