欢迎来到人人文库网! | 帮助中心 人人文库renrendoc.com美如初恋!
人人文库网
首页 人人文库网 > 资源分类 > DOC文档下载

通信学论文-通用子目录文件显示方法 .doc

  • 资源大小:11.91KB        全文页数:12页
  • 资源格式: DOC        下载权限:游客/注册会员/VIP会员    下载费用:2
游客快捷下载 游客一键下载
会员登录下载
下载资源需要2

邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。注:支付完成后需要自己下载文件,并不会自动发送文件哦!

支付方式: 微信支付    支付宝   
验证码:   换一换

友情提示
2、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

通信学论文-通用子目录文件显示方法 .doc

通信学论文通用子目录文件显示方法在用CHKDS/V对磁盘子目录及子目录文件进行查找时,由于输出显示信息没有分屏显示,很容易错过需要的信息,并且显示信息没有标记出隐藏的子目录名及子目录文件名,这样就对进一步的子目录及文件操作带来许多不便。若辅以管道操作采用CHKDSK/V|MORE,虽然可分屏显示,但等待输出时间过长,而且这时_BREAK中断被封锁,效果不尽人意。本文针对于此采用截获_BREAK和分屏缓冲输出技术实现子目录和子目录文件及其属性的显示。一、实现原理子目录和子目录文件的查找是通过C语言函数FINDFIRST和FINDNEXT采用递归算法实现的。子目录和子目录文件的属性是根据属性字来判断。属性字格式如下图所示|7|6|5|4|3|2|1|0|第0位只读位取1表示只读第1位隐含位取1表示隐含第2位系统位取1表示系统第3位卷标位取1表示卷标第4位子目录位取1表示子目录第5位归档位取1表示归档第6、7位保留未用在子目录及子目录文件查找的递归调用前,保存_BREAK标记并封锁_BREAK中断,在正常结束或截获_BREAK中断或ESC信号后恢复_BREAK标记,并恢复指定驱动器的当前子目录、当前驱动器以及当前驱动器的当前子目录。在子目录和子目录文件的分屏缓冲输出显示方面,建立一输出缓冲区BUFFER8025来完成结果信息的分屏缓冲输出。二、程序功能本程序功能有分屏显示指定驱动器缺省时为当前驱动器、指定目录缺省时为当时目录中的指定文件缺省时为及其所包含的子目录和子目录中的指定文件缺省时为。对于子目录显示其子目录名及其属性,对于文件显示匹配的文件名、长度、建立时间及属性,最后输出匹配的文件个数及所包含的子目录个数。在查找过程中可按_BREAK或ESC键退出并返回当前驱动器及其当前目录,若指定驱动器不是当前驱动器则恢复指定驱动器的当前目录。下面举例说明隐藏子目录的查找。假定在驱动器A上建立子目录TEMP,用PCTOOLS或NORTON工具软件将其属性由10改为FF。这样在DOS状态下键入CDTEMP,系统会提示出错。作用CHKDSKA,系统提示CANNOTCHDIRTOA\TEMP,TREEPASTTHISPOINTNOTPROCESSED使用本程序,运行结果认为TEMP为一文件,其属性为HSRALD,表示这是一个子目录,可据此推猜其为一加密子目录,可进一步用NORTON工具软件解密。三、实现实例实例是在386兼容机、BORLANDC31集成环境和DOS60操作系统支持下调试通过,实现源程序附后。需要指出的不足是,由于FINDFIRST与FINDNEXT是通过查找目录项区实现其功能的,所以对一些与FAT表不符的隐藏文件及子目录的方法本程序不能奏效,建议结合CHKDSK使用本程序。另外,本文采用的封锁_BREAK的方法适用于查找过程,但在屏幕输出过程中不能做到封锁_BREAK中断。若需在查、屏幕输出过程中均封锁_BREAK中断,可采用CTRBRK函数另建一个_BREAK中断服务程序。INCLUDESTDIOHINCLUDESTDIOHINCLUDEDOSHINCLUDEDIRHINCLUDECTYPEHINCLUDESTRINGHINCLUDEIOHDEFINEESC27DEFINECTRL_BREAK3DEFINEPAGE_NUMBER22VOIDDIROPERATEVOID;VOIDADD_ATTRIBSTRUCTFFBLK;VOIDFULL_SCREEN_OPERATEVOID;CHARDRIVERMAXDRIVE,DIRMAXDIR;CHARFILEMAXFILE,EXTMAXEXTCHARCURDRIVER,CURDIRMAXDIR;CHAROLDDRIVER,OLDDIRMAXDIR,WORKDIRMAXDIR;CHARFN13;INTPAGE_SUM0,DIR_SUM0,FILE_SUM0;CHARBUFFER8025;CHARBUFFER_POINTERBUFFER;CHARCTRL_BRESK_FLAG;CHARATTRIB7;MAININTARGC,CHARARGV{CURDRIVERGETDISK;GETCWDCURDIR,MAXDIR;DRIVER0CURDRIVERA;IFARGC2{PRINTFTOOMUCHPARAMETERS\N;EXIT0}IFARGC2{FNSPLITARGV1,DRIVER,DIR,FILE,EXT;IFSTRCPYFILE0{STRCPYFILE,EXR,13;STRCPYFNFILE;};IFSTRLENDRIVER0{SETDISKTOUPPERDRIVER0ASETDISKTOUPPERDRIVE0AGETCWDOLDDIR,MAXDIR;STRCPYWORKDIR,DIRVER;IFSTRLENDIR0IFSTRLENDIR1STRCATWORKDIR,DIR,STRLENDIR;ELSESTRNCATWORKDIR,DIR,STRLENDIR1;CHDIRWORKDIR;};}CTRL_BREAK_FLAGGETCBRK;SETCBRK0;DIR_OPERATEPUSTBUFFER;SETCBRRKCTRL_BREAK_FLAG;IFDIR_SUM10PRINTFNOSUB_DIRECTORIES\NELSEPRINTFDDIRECTORIES\N,DIR_SUM1IFFILE_SUM0PRINTFNOFILES\NELSEPRINTFDFILES\N,FILE_SUM;IFSTRLENDRIVER0{CHDIROLDDIR;};SETDISKCURDRIVER;CHDIRCURDIR;RETURN0;}VOIDDIR_OPERATEVOID{STRUCTFFBLKDIRMENT;INTDONE,P,BYTE_NUM;UNSIGNEDINTYEAR,MONTH,DATE,HOURMINUTE;CHARPATHMAXDIR;/BEGINTOSEARCHALLPOSSIBLEFILES/DONEFINDFIRSTFN,DIRMENT,0X2F;GETCWDPATH,MAXPATH;DIR_SUM;PAGE_SUM;IFPAGE_SUMPAGE_NUMBERFULL_SCREEN_OPERATE;/WRITEDIRECTORYNAMEANDITSATTRIBUTEINTOBUFFER/BYTE_NUMSPRINTFBUFFER_POINTER,DIRECTORYS,PATH;BUFFER_POINERBYTE_UNM;BYTE_UNMSPRINTFBUFFER_POINTER,6S\N,ATTRIB;BUFFER_POINTERBYTE_NUM;WHILEDONE{PAGE_SUM;FILE_SUM;IFPAGE_SUMPAGE_NUMBERFULL_SCREEN_OPERATE;/WRITEFILENAMEANDITSLENGTH,TIME,ATTRIBUTEINTOBUFFER/BYTP_NUMSPRINTFBUFFER_POINTER,20S8LD,DOR,EMTFF_NAME,DIRMENTFF_FSIZE;BUFFER_POINTERBYTE_NUM;YEARDIRMENTFF_FDATE90X7F80;MONTHDIRMENTFF_FDATE50XF;DATEDIRMENTFF_FDATE0X1F;HOURDIRMENTFF_FTIME110X1F;MINUTEDIRMENTFF_FTIME50X3F;BYTE_NUMSPRINTFBUFFERR_POINTER,2D02D2D,MONTH,DATE,YEAR;BUFFER_POINTERBYTE_NUM;IFHOUR12{BYTE_NUMSPRINTFBUFFER_POINTER,2D02DP,HOUR12,MINUTE;BUFFER_POINTERBYTE_NUM;}ELSE{BYTE_NUMSPRINTFBUFFER_POINTER,2D2DA,HOURMINUTE;BUFFER_POINTERBYTE_NUM;}ADD_ATTRIBDIRMENT;BYTE_NUM_SPRINTFBUFFER_POINTER,6S\N,ATTRIB;BUFFER_POINTERBYTE_NUM;/CONTINUETOSEARCH/DONEFINDNEXTDIRMENT;};/BEGINTOSEARCHALLPOSSIBLEDIRECTORIES/PFINDFIRST,DIRMENT,0X37;/SKIPDIRECTORIESAND/IFPDIRMENTFF_NAME0{PFINDNEXTDIRMENT;PFINDNEXTDIRMENT;}WHILEP{/IFITISDIRECTORY,THENOPERATEIT/IFCHMODDIRMENTFF_NAME,0FA_DIREC{CHDIRDIRMENTFF_NAME;ADD_ATTRIBDIRMENT;/SKIPDIRECTORIESAND/DIR_OPERATE;CHDIR;}/CONTINUETOSEARCH/PFINDNEXTDIRMENT;}}VOIDADD_ATTRIBSTRUCTFFBLKDIRMENT/CALCULATEATTRIBUTEOFTHEGIVENFILE/DIRECTORY/{IFDIRMENTFF_ATTRIBFA_HIDDENATTRIB0H;ELSE

注意事项

本文(通信学论文-通用子目录文件显示方法 .doc)为本站会员(zhaozilong)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(发送邮件至[email protected]或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5