- 相關(guān)推薦
通用子目錄文件顯示方法
在用CHKDS/V對磁盤子目錄及子目錄文件進行查找時,由于輸出顯示信息沒有分屏顯示,很容易錯過需要的信息,并且顯示信息沒有標(biāo)記出隱藏的子目錄名及子目錄文件名,這樣就對進一步的子目錄及文件操作帶來許多不便。若輔以管道操作采用CHKDSK/V:|MORE,雖然可分屏顯示,但等待輸出時間過長,而且這時^_Break中斷被封鎖,效果不盡人意。本文針對于此采用截獲^_Break和分屏緩沖輸出技術(shù)實現(xiàn)子目錄和子目錄文件及其屬性的顯示。
一、實現(xiàn)原理
子目錄和子目錄文件的查找是通過C語言函數(shù)findfirst和findnext采用遞歸算法實現(xiàn)的。
子目錄和子目錄文件的屬性是根據(jù)屬性字來判斷。屬性字格式如下圖所示:
-----------------
|7|6|5|4|3|2|1|0|
-----------------
第0位(只讀位):取1表示只讀
第1位(隱含位):取1表示隱含
第2位(系統(tǒng)位):取1表示系統(tǒng)
第3位(卷標(biāo)位):取1表示卷標(biāo)
第4位(子目錄位):取1表示子目錄
第5位(歸檔位):取1表示歸檔
第6、7位:保留未用
在子目錄及子目錄文件查找的遞歸調(diào)用前,保存^_Break標(biāo)記并封鎖^_Break中斷,在正常結(jié)束或截獲^_Break中斷(或ESC信號)后恢復(fù)^_Break標(biāo)記,并恢復(fù)指定驅(qū)動器的當(dāng)前子目錄、當(dāng)前驅(qū)動器以及當(dāng)前驅(qū)動器的當(dāng)前子目錄。
在子目錄和子目錄文件的分屏緩沖輸出顯示方面,建立一輸出緩沖區(qū)BUFFER[80*25]來完成結(jié)果信息的分屏緩沖輸出。
二、程序功能
本程序功能有分屏顯示指定驅(qū)動器(缺省時為當(dāng)前驅(qū)動器)、指定目錄(缺省時為當(dāng)時目錄)中的指定文件(缺省時為*.*)及其所包含的子目錄和子目錄中的指定文件(缺省時為*.*)。對于子目錄顯示其子目錄名及其屬性,對于文件顯示匹配的文件名、長度、建立時間及屬性,最后輸出匹配的文件個數(shù)及所包含的子目錄個數(shù)。在查找過程中可按^_Break或ESC鍵退出并返回當(dāng)前驅(qū)動器及其當(dāng)前目錄,若指定驅(qū)動器不是當(dāng)前驅(qū)動器則恢復(fù)指定驅(qū)動器的當(dāng)前目錄。
下面舉例說明隱藏子目錄的查找。
假定在驅(qū)動器A上建立子目錄TEMP,用PCTOOLS或 NORTON工具軟件將其屬性由10改為FF。這樣在DOS狀態(tài)下鍵入CD TEMP,系統(tǒng)會提示出錯。
作用CHKDSK A:,系統(tǒng)提示:
Cannot CHDIR to A:\TEMP,
tree past this point not processed
使用本程序,運行結(jié)果認為TEMP為一文件,其屬性為HSRALD,表示這是一個子目錄,可據(jù)此推猜其為一加密子目錄,可進一步用NORTON工具軟件解密。
三、實現(xiàn)實例
實例是在386兼容機、BORLAND C 3.1集成環(huán)境和DOS 6.0操作系統(tǒng)支持下調(diào)試通過,實現(xiàn)源程序附后。
需要指出的不足是,由于findfirst與findnext是通過查找目錄項區(qū)實現(xiàn)其功能的,所以對一些與FAT表不符的隱藏文件及子目錄的方法本程序不能奏效,建議結(jié)合CHKDSK使用本程序。
另外,本文采用的封鎖^_Break的方法適用于查找過程,但在屏幕輸出過程中不能做到封鎖^_Break中斷。若需在查、屏幕輸出過程中均封鎖^_Break中斷,可采用ctrbrk函數(shù)另建一個^_Break中斷服務(wù)程序。
#include<stdio.h>
#include<stdio.h>
#include<dos.h>
#include<dir.h>
#include<ctype.h>
#include<s
[1] [2] [3] [4]
【通用子目錄文件顯示方法】相關(guān)文章:
MapGIS文件到ArcGIS文件的轉(zhuǎn)換方法04-28
基于序列視差圖像的全息立體顯示方法04-28
STL格式文件的拓撲重建方法研究04-28
顯示04-29
文件04-29
什么是顯示04-26