第二章 文件系統和命令系統
第一節 DOS的文件系統
DOS有一套完備、嚴謹的文件系統。其實,這只是DOS提供給用戶的管理信息的方法,實質上是用來管理信息的。首先要弄清楚某個文件到底代表的是什麼信息,然後再對它進行有目的操作。從文件本身的角度看,每一個文件都有以下幾個特性(propertIEs):
1. 文件主名(File Main Name):人要有自己的名字,每個文件也要有自己的名字。DOS下,文件主名可以由不超過8個字節的(至多8個半角字或4個全角字)字符組成,但是以下幾個字符是禁用的:?、*、〈、〉、/、、|、:、;、,、.、+、空格。但是Windows對這個規定做了加工,文件主名的長度擴充至256個字節,取消了空格的禁用。為什麼要有禁用呢?因為DOS中這些字符已經有了它的特定含義,關於這一點在以後會有介紹。還有一點要注意:DOS還為每個常用的外部設備都起了名字,這些名字也不能被用作一般文件的主名,列表如下:
設備名代表的設備設備名代表的設備CON 鍵盤和顯示器LPT1 這四個是 DOS 提供的“並行接口”, LPT1 上常常連接著打印機,在這一點上很像 PRN 設備 PRN 打印機LPT2 COM1 這四個是 DOS 提供的“串行接口”, COM1 上常常連接著鼠標器, COM2 上常常連接著調制解調器LPT3 COM2 LPT4 COM3 AUX 極少用,與 COM1 相似 COM4 NUL DOS 保留的“空”設備表2-1-1 設備名表
2. 文件擴展名(File Extension Name):就像人為了標明自己的身份而穿上不同的工作服一樣,文件光有文件名還不夠,還要有一個不超過3個字符的'擴展名'以標明該文件的用途(Windows中長度要求放寬到與文件主名之和不超過256個字節)。文件的擴展名是區分文件類型的重要依據。一些常用的文件擴展名列表如下:
擴展名 文件類型 擴展名 文件類型 擴展名 文件類型 EXE 程序文件 TXT 文本文件 BAK 後備文件 COM 命令文件 以上這些文件由常用的編輯系統建立SYS 系統文件 BAT 批處理文件 WAV 波形聲音
文件
以上這些文件由系統表2-1-2 常用擴展名表
*文檔是文件的一種,它是由用戶編輯的各種文件;
**臨時文件的擴展名也可能是T01、%A%…;
***壓縮包是這樣一類文件:許多文件由壓縮軟件壓縮後存儲在一個文件中,這種文件就叫做壓縮包。它是把壓縮前的文件恢復的信息源,所以要保證它的完好。
通常我們把文件主名和文件擴展名統稱為文件名(File Name),用“文件主名.文件擴展名”的形式寫出,比如一個文件的文件主名是MYFILE,文件擴展名是EXT,那麼該文件的文件名就是MYFILE.EXT,我們實際是通過文件名來找到它代表的文件的。文件名是文件的最重要的特性,這一點在Windows下是可以完全套用的。
3. 文件屬性(File Attribute):每個文件都可能有四種屬性,它們是只讀(Read Only)、隱含(Hidden)、系統(System)和歸檔(Archive)。只讀文件不能任意改寫和刪除;隱含文件不能任意查看;系統文件不能任意改寫、刪除和查看;歸檔屬性幾乎為所有文件所共有,沒有什麼限制作用。一個文件可以同時具有多種屬性,互不沖突。
4. 文件大小(File Size):文件大小也是文件的一種特性?Yes。文件的大小在DOS下也是有專門的字節來記錄的,剛剛建立的文件的大小是0個字節。當然文件大小也是可以修改的,所以文件邏輯大小和實際大小並不一定一致,有些病毒就是通過把文件大小改小來隱藏其罪惡之軀的。文件大小和文件占用磁盤空間有區別,也有聯系。文件占用的磁盤空間和磁盤的簇(cluster)的大小有關,假設磁盤最小簇為xKB,文件大小為yKB,則文件占用的磁盤空間為([y÷x]+1)×xKB。
5. 文件建立日期和時間(File Created Date & Time):任何一個文件,一經建立,DOS便自動把建立時的系統日期和時間寫入文件中,這就能確定文件的建立的時間和日期了。那麼DOS又是怎麼知道系統日期和時間的呢?是DOS控制基本輸入輸出系統(BiOS)從互補金屬氧化物半導體(CMOS)上讀取的,它也是可改的。
文件系統是DOS的核心,也是以後的章節的基礎,一定要牢牢掌握。
第二章 文件系統和命令系統
第二節 DOS的樹形目錄管理模式
文件多了,就有了一個管理的問題。最好是像書櫃裡的書一樣,一類書放在特定的一個抽屜裡。DOS為文件也准備了這樣的“邏輯抽屜”,只不過在DOS中,它被稱為目錄(directory)罷了!一張已經格式化的磁盤上,都有一個根目錄(Root Directory),好比是一個櫃子;在根目錄下,又有許多子目錄(Sub Directory),就相當於櫃子上的抽屜。目錄下面可以存儲文件,而子目錄也是一種特殊的文件,有自己的文件名、建立日期和時間,大小為一個最小磁盤最小簇。所以有人爭論說文件還有一種目錄屬性,我是贊同的。
這樣,DOS下的文件系統,就形成了這樣一種格局:根目錄下存儲著一些文件和子目錄,而子目錄下又存儲著一些文件更下一級的子目錄…這多麼像自然界中的樹呀!不是嗎?根目錄就像樹干,子目錄就像樹枝,而樹枝又分叉兒。文件就像樹葉,長在樹干和樹枝上。根目錄下的子目錄稱為一級子目錄,其下級子目錄稱為二級子目錄,依此類推,但級數是有限制的。那麼怎樣才能准確無誤地找到每一個文件呢?不難。DOS提出了一個路徑(path)的概念,在DOS中表達一個文件的定位遵從以下的規則:
1. 首先確定盤符(drive)。DOS給軟盤分配的盤符是A和B,給硬盤分配的盤符是從C開始的若干個字母,給光盤和網絡映射盤分配的盤符又在最後一個硬盤盤符以後。弄清文件存在以哪個盤符為代號的盤中,這是第一步。
2. 其次確定所在的目錄。不同級的目錄用“\”號隔開,根目錄用單獨一個“\”號表示。這樣說也許有一點兒抽象,舉個例子來說。比如一個文件名是Eiyl7xb9.DAT文件在根目錄下的Windows子目錄下的Java子目錄下的Packages子目錄下的Data子目錄下(嚇人吧),它的路徑就是“\Windows\Java\Packages\Data”;
3. 文件的准確定位就要寫成“盤符:路徑\文件名”的形式。如果上面那個文件存在C盤上,“C: \Windows\Java\Packages\Data\ Eiyl7xb9.DAT”就是這個文件的准確定位。
4. 每個子目錄中都有兩個下一級子目錄:“.”和“..”,前者代表當前目錄(Current Directory) ,也就是這個目錄本身;後者代表其所在目錄(Location Directory),也叫其父目錄(Parent Directory)。比如:“C:\Windows\.”和”C:\Windows”是一回事,“C:\Windows\Java\..”和“C:\Windows”也是一回事。
5. 為了方便用戶,DOS提供了兩個通配符(Wildcard Character)“?”和“*”。用它們可以一次指定一批文件。“?”代表一個半角未禁用字符或者空格,“*”代表任意多個未禁用字符或者空格。“?”和“*”既可以用在文件主名中,也可以用在文件擴展名中,但不能用在路徑中。比如,所有文件(All the Files)可以用”*.*”來匹配;以M開頭的所有文件可以用“M*.*”來匹配;所有的Word文檔可以有“*.DOC”來匹配;A1.TXT,A3.TXT,A10.TXT,A100.TXT、A100.EXE和ABC.WAV這6個文件中,前2、3、4、5、6個,可以分別用A?.TXT、A??.TXT、A???.TXT、A???.?X?和A*.*匹配;C盤當前目錄的上級目錄的所有以GB開始的MIDI文件可以用“C:..\GB*.MID”來匹配。而“C:\Windows\Ja??\Pack*\E*.*”則是非法的。一般用戶如果要用一批文件,它們一定會在文件名上有某些共同點,用通