《2022年操作系统-文件管理 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统-文件管理 .pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计:模拟文件管理1设计目的(1) 建立一个简单的模拟文件管理系统。(2) 理解用户界面和操作命令在操作系统中的作用。2设计要求需要实现一个命令行操作界面,包含如下命令:1. 创建文件功能:创立一个指定名字的新文件,即在目录中增加一项,不考虑文件内容,但必须能输入文件长度。2. 删除文件功能:删除指定的文件3. 创建目录功能:在当前路径下创建指定的目录。4. 删除目录功能:删除当前目录下的指定目录,如果该目录为空,则可删除,否则应提示是否作删除,删除操作将该目录下的全部文件和子目录都删除。5. 改变目录功能:工作目录转移到指定的目录下,只要求完成改变到当前目录的某一个子目录下的功能,不要求
2、实现相对目录以及绝对目录。6. 显示目录功能:显示全部目录以及文件,输出时要求先输出接近根的目录,再输出子目录。对于重名(创建时),文件不存在(删除时),目录不存在(改变目录时)等错误情况,程序应该作出相应处理并给出错误信息。界面的提示符为 #,提示的命令以及调试的方法应和前面的要求一致,可以自己设计更多的命令或者附加功能。3环境本实验是在 windows xp+vc 6.0环境下实现的,利用windows SDK 提供的系统接口( API)完成程序功能。在windows xp下安装好 VC后进行, VC是一个集成开发环境,其中包含了windows SDK所有工具,所名师资料总结 - - -精
3、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 以就不用单独在安装SDK了,程序中所用的 API是操作系统提供的用来进行应用程序设计的系统功能接口。要使用这些API,需要包含对这些函数进行说明的 SDK头文件,最常见的就是windows.h。一些特殊的 API调用还需要包含其他的头文件。4步骤1. 打开VC,选择菜单项 File-New ,选择 File选项卡并建立一个名为FileSyste.cpp的文件。2. 此时将打开一个 FileSystem.c
4、pp文件的编辑窗口,在其中编辑程序,编辑好原文件并保存。3. 通过调用菜单项 Build-Build 进行编译连接,此时系统提示是否创建工程,选择 “Yes”可自动创建相应工程。可以在指定的工程目录下得到 debug-FileSystem.exe程序,可以直接运行改程序或者在控制台进入该 debug目录运行程序。5程序代码1. #include stdio.h2. #include windows.h3. #include string.h4. #include 5. / 检查错误用代码6. /DWORD er = GetLastError();7. /printf(ERROR:%dn,er)
5、;8. 9. char comd10;/ 命令10. char setMAX_PATH;/ 第一参数11. char set2MAX_PATH;/ 第二参数12. char rootMAX_PATH;/当前路径13. char rrMAX_PATH;/绝对路径14. 15. / 查找文件或路径16. int findFile(char *name)17. int found = 0;18. struct _WIN32_FIND_DATAA fileData;19. HANDLE hdf;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
6、 - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 20. hdf=FindFirstFile(*,&fileData);21. while(FindNextFile(hdf,&fileData)/继续寻找22. if(strcmp(name,fileData.cFileName)=0 & !(fileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)/如果找到23. found = found + 1;/ 找到文件24. else if(strcmp(name,fileData.cFile
7、Name)=0 &(fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)25. found = found + 2;/ 找到目录26. 27. FindClose(hdf);28. return found;/ 如果found=3,则既有文件又有目录29. 30. / 进入目录31. void cdComd()32. if(strcmp(root,Root)=0&strcmp(set,.)=0)33. printf( 已经到根目录了! n);34. else if(findFile(set)=2|findFile(set)=3)35. Se
8、tCurrentDirectory(set);36. else37. printf( 没有该目录! n);38. 39. 40. / 显示目录内容41. void dirComd()42. struct _WIN32_FIND_DATAA fileData;43. HANDLE hdf;44. hdf=FindFirstFile(*,&fileData);/任意匹配文件45. while(FindNextFile(hdf,&fileData)/寻找下一个文件46. if(fileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)/如果为目录47.
9、printf( t);48. else if(!(fileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)/如果为文件49. printf( t);50. printf(t%-16s,fileData.cFileName);/ 显示文件名51. if(fileData.dwFileAttributes=32)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 52. printf(t
10、%d Bt,fileData.nFileSizeLow);/显示文件大小53. else if(fileData.dwFileAttributes=16)54. printf(tt);55. 56. SYSTEMTIME syst;57. FileTimeToSystemTime(&(fileData.ftCreationTime),&syst);/获取文件创建时间58. printf(t%4d-%2d-%2d%2d:%2d:%2d,syst.wYear,syst.wMonth,syst.wDay,syst.wHour+8,syst.wMinute59. printf(n);/ 显示文件创建时
11、间60. 61. FindClose(hdf); 62. 63. 64. /创建目录65. void mdComd()66. if(findFile(set)=2|findFile(set)=3)67. printf( 该目录已存在! n);68. else69. CreateDirectory(set,NULL);70. 71. 72. / 删除目录73. void rdComd()74. if(findFile(set)=2|findFile(set)=3)75. RemoveDirectory(set);76. else77. printf( 没有该目录! n);78. 79. 80.
12、/ 创建文件81. void cfComd()82. if(findFile(set)=1|findFile(set)=3)83. printf( 该文件已存在! n);84. else85. HANDLE hdcf=NULL;/获取创建文件句柄86. hdcf=CreateFile(set,0,0,NULL,CREATE_NEW,FILE_FLAG_WRITE_TH名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 87. Cl
13、oseHandle(hdcf);/ 关闭创建文件的句柄88. 89. 90. 91. / 删除文件92. void delComd()93. if(findFile(set)=1|findFile(set)=3)94. DeleteFile(set);95. 96. else97. printf( 没有该文件! n);98. 99. 100. / 重命名101. void rnComd()102. if(findFile(set)!=0)103. MoveFile(set,set2);104. 105. else106. printf( 没有该文件! n);107. 108. 109. / 复
14、制文件110. void copyComd()111. if(findFile(set)=1|findFile(set)=3)112. CopyFile(set,set2,true);113. 114. else115. printf( 没有该文件! n);116. 117. 118. / 显示命令帮助119. void helpComd()120. printf(=Command=121. printf( cd(进入子目录 )tmd(新建目录 )trd(删除目录 )tcf(新建文件)tdel(删除文件 )n);122. printf( dir(显示内容 )trn(重命名 )tcopy(复制文
15、件 )thelp(帮名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 助)texit(退出)n);123. printf(=124. 125. 126. / 退出系统127. void exitComd()128. printf(t 谢谢试用! n);129. exit(0);130. 131. 132. / 选择命令执行133. void selComd()134. if(strcmp(comd,cd)=0)135. cdCo
16、md();136. else if(strcmp(comd,dir)=0)137. dirComd();138. else if(strcmp(comd,md)=0)139. mdComd();140. else if(strcmp(comd,cf)=0)141. cfComd();142. else if(strcmp(comd,rd)=0)143. rdComd();144. else if(strcmp(comd,del)=0)145. delComd();146. else if(strcmp(comd,rn)=0)147. rnComd();148. else if(strcmp(c
17、omd,copy)=0)149. copyComd();150. else if(strcmp(comd,help)=0)151. helpComd();152. else if(strcmp(comd,exit)=0)153. exitComd();154. else155. printf( !无效命令! n); 156. 157. 158. / 输入命令及参数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 159. voi
18、d inputComd()160. scanf(%s,&comd);/ 输入 命令161. if(strcmp(comd,cd)=0|strcmp(comd,md)=0|strcmp(comd,cf)=0|strc162. scanf(%s,&set);/ 输入参数 1163. else if(strcmp(comd,rn)=0|strcmp(comd,copy)=0)164. scanf(%s %s,set,set2);165. 166. else return;167. 168. 169. / 获取当前目录170. void getRoot()171. GetCurrentDirector
19、y(MAX_PATH,rr);172. for(int i=0;i);189. printf(%s,path);190. inputComd();/ 输入命令191. selComd();/执行命令192. 193. return 0;194. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 6运行结果分析直接运行 FileSystem.exe或者在控制台窗口的提示符下进入相应路径,输入FileSystem回车,如图1。图1
20、主界面1. 显示目录,如图 2图2显示目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 2. 创建文件,如图 3。图3创建文件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 3. 重命名文件,如图 4。图4重命名文件4. 删除文件,如图 5。图5 删除文件名
21、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 5. 创建目录,如图 6。图6 创建目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 6. 重命名目录,如图 7。图7重命名目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
22、 - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 7. 删除目录,如图 8。图8 删除目录8. 改变目录,如图 9。图9-1 进入子目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - 图9-2 进入子目录图9-3 返回上一级目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 9. 复制文件,如图 10。图10 复制文件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -