实验 文件管理(二)
- 格式:docx
- 大小:45.02 KB
- 文档页数:11
文件管理实验报告一、实验目的文件管理是操作系统的重要组成部分,本次实验的目的在于深入理解文件管理的基本概念和原理,掌握文件的存储、组织、检索和访问等操作,熟悉常见的文件系统结构和功能,提高对文件管理系统的实际操作能力和问题解决能力。
二、实验环境1、操作系统:Windows 102、开发工具:Microsoft Visual Studio 2019三、实验内容1、文件的创建、删除和重命名使用 C++或 Python 编程语言,通过系统调用或相关库函数实现文件的创建、删除和重命名操作。
观察文件在操作系统中的实际表现,如文件的出现和消失,文件名的更改等。
2、文件的读写操作实现对文本文件和二进制文件的读写操作,包括读取文件的全部内容、按行读取文件、向文件写入数据等。
分析不同读写模式(如只读、只写、读写等)对文件操作的影响。
3、文件属性的获取和修改获取文件的基本属性,如文件大小、创建时间、修改时间、访问权限等。
尝试修改文件的部分属性,如只读属性、隐藏属性等,观察修改后的效果。
4、文件目录的操作创建、删除和遍历目录。
实现文件在不同目录之间的移动和复制操作。
四、实验步骤1、文件的创建、删除和重命名以下是使用 Python 实现文件创建、删除和重命名的示例代码:```pythonimport os创建文件file_path ="exampletxt"with open(file_path, 'w') as f:fwrite("This is a test file")删除文件osremove(file_path)重命名文件new_file_path ="renamed_exampletxt"osrename(file_path, new_file_path)```运行代码后,可以在指定的目录中观察到文件的创建、删除和重命名操作的结果。
2、文件的读写操作读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:content = fread()print(content)```按行读取文本文件的示例代码:```pythonfile_path ="text_filetxt"with open(file_path, 'r') as f:for line in f:print(linestrip())```写入数据到文件的示例代码:```pythonfile_path ="outputtxt"with open(file_path, 'w') as f:fwrite("New data written to file")```分别运行上述代码,观察文件的读写结果。
检测实验室的文件管理制度一、目的为了规范检测实验室的文件管理,保证文件的完整性、保密性、可追溯性和可控性,提高管理效率,减少风险,有效保障检验结果的准确性和可靠性,特制定本制度。
二、适用范围本制度适用于检测实验室内的所有文件管理活动。
三、文件的分类(一)根据文件管理的目的和功能,文件可分为以下几类:1.技术文件:包括检验人员的操作指南、试验方法、记录表格等一切与检验过程相关的文件。
2.质量文件:包括实验室的质量手册、程序文件、记录文件等一切与质量管理相关的文件。
3.管理文件:包括队列、会议纪要、行政管理等一切与管理活动相关的文件。
(二)根据文件形式和载体的不同,文件可分为电子文件和纸质文件。
四、文件的保管(一)实验室应设置专门的文件室,负责管理文件。
文件室应干燥、通风,并设置相应的保管设施,如文件柜、文件架等。
(二)文件室应有专人负责保管和管理文件,确保文件的安全性。
(三)纸质文件的保管,应按照文件的重要性、保密等级等不同情况制定相应的保管要求,并严格执行。
(四)电子文件的保管应采取相应的技术手段,保证其完整性和可追溯性。
五、文件的归档(一)文件的使用周期结束后,应根据文件的重要性和保留价值,归档到不同的档案室。
(二)归档后的文件应按照一定的规则进行编号、登记、标识和分类存放,以便日后查阅和管理。
(三)归档文件的保管期限应符合相关的法律法规和标准要求。
(四)保管期限结束后,应按照文件的分类,进行相应的处置,如销毁、转交等。
六、文件的流转(一)文件的流转应有相应的流转单据,包括发文、收文等。
(二)文件的流转应明确流转范围、流转目的、流转时间等信息,确保文件的准确、及时地传达和交流。
(三)文件的借阅应有相应的申请手续,明确借阅期限和借阅人员,确保文件的安全和保密。
七、文件的备份和恢复(一)实验室应定期对重要的电子文件进行备份,确保文件的安全性和完整性。
(二)备份文件的存放应分散进行,确保备份文件的安全性。
一、实验目的1. 理解文件管理的概念和基本原理。
2. 掌握文件系统的结构及其组成。
3. 学会使用文件管理系统进行文件操作。
4. 了解文件系统的性能优化方法。
二、实验环境1. 操作系统:Windows 102. 文件管理系统:Windows Explorer3. 实验工具:文本编辑器(如Notepad)三、实验内容1. 文件系统的基本概念2. 文件系统的结构3. 文件操作4. 文件系统性能优化四、实验步骤1. 文件系统的基本概念(1)打开Windows Explorer,观察文件系统的组织结构。
(2)分析文件系统的组成,包括文件、目录、驱动器等。
(3)了解文件名、扩展名、路径等基本概念。
2. 文件系统的结构(1)创建一个新文件夹,命名为“实验文件夹”。
(2)在“实验文件夹”中创建一个文本文件,命名为“实验报告.txt”。
(3)观察文件系统的树状结构,理解目录与文件之间的关系。
3. 文件操作(1)打开“实验报告.txt”,使用文本编辑器进行编辑。
(2)保存并关闭编辑器。
(3)将“实验报告.txt”复制到“实验文件夹”的子目录中。
(4)删除“实验文件夹”中的“实验报告.txt”。
(5)重命名“实验文件夹”中的子目录。
4. 文件系统性能优化(1)查看磁盘属性,了解磁盘空间占用情况。
(2)对磁盘进行碎片整理。
(3)使用磁盘清理工具清理磁盘中的临时文件。
五、实验结果与分析1. 文件系统的基本概念通过实验,我们了解了文件系统的基本概念,包括文件、目录、驱动器等。
文件系统是操作系统管理文件的一种数据结构,用于存储、检索、更新和删除文件。
2. 文件系统的结构实验中,我们创建了文件夹和文件,并观察了文件系统的树状结构。
文件系统采用分层结构,目录与文件之间通过路径连接。
3. 文件操作实验中,我们进行了文件操作,包括创建、编辑、复制、删除和重命名。
这些操作是文件管理的基本技能。
4. 文件系统性能优化通过磁盘碎片整理和清理磁盘中的临时文件,我们提高了文件系统的性能。
操作系统实验报告文件管理文件管理是操作系统的重要功能之一,它负责对计算机系统中的文件进行组织、存储和访问。
文件管理系统的设计和实现对操作系统的性能和可靠性起着重要作用。
本文将介绍文件管理的基本概念、文件系统的组织方式和文件的操作方法。
一、文件管理的概念文件是计算机系统中存储和管理数据的基本单位,它可以是文本、图像、音频、视频等各种类型的数据。
文件管理的目标是实现对文件的有效组织和高效访问,使得用户和应用程序可以方便地读取、写入和删除文件。
文件管理系统主要包括以下几个方面:1.文件组织方式:文件可以按照不同的方式进行组织,包括顺序文件、索引文件、哈希文件等。
不同的组织方式有不同的优势和适用场景,可以根据实际需要选择合适的组织方式。
2.文件存储管理:文件在存储设备上的存储方式包括连续存储、链式存储和索引存储等。
不同的存储方式对文件的读写性能和空间利用率有影响,需要根据实际情况进行选择。
3.文件访问控制:对文件的访问需要进行权限控制,保证只有合法的用户或应用程序可以读取和写入文件。
文件访问控制主要通过访问权限和文件属性来实现。
二、文件系统的组织方式1.单级目录结构:这是最简单的文件系统组织方式,所有文件都位于同一个目录下。
由于没有目录的嵌套结构,文件的查找和管理比较简单,但是对于大量文件的管理不够灵活。
2.层次目录结构:该方式通过目录的嵌套结构来组织文件,可以形成一棵树状结构。
目录可以包含子目录和文件,用户可以通过目录路径来访问文件。
这种组织方式可以更好地组织大量的文件,提高文件的查找效率。
3.索引目录结构:该方式使用一个索引表来记录文件的位置和属性信息,用户通过索引表中的索引来访问文件。
索引表可以根据文件名、文件类型等信息快速定位到文件的位置,提高访问效率。
此外,索引表还可以支持对文件的动态增删改查操作。
三、文件的操作方法1.创建文件:文件的创建是指在文件系统中创建一个新文件,并为其分配存储空间。
创建文件时需要指定文件名和文件类型,并根据需要为文件设置访问权限和属性。
第1篇一、实验目的本次实验旨在通过实际操作,验证文件管理的有效性和可行性,并对文件管理系统的性能进行评估。
通过实验,了解文件管理的相关原理和方法,提高文件管理的实践能力。
二、实验环境1. 操作系统:Windows 102. 文件管理系统:Windows文件管理器3. 实验数据:实验过程中产生的文件和数据三、实验内容1. 文件创建与删除2. 文件夹创建与删除3. 文件与文件夹的复制、移动、重命名4. 文件属性的设置与修改5. 文件搜索与查找6. 文件权限管理7. 文件压缩与解压四、实验步骤1. 文件创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件.txt”的文本文件。
(2)在“实验文件.txt”上右击,选择“删除”,确认删除。
2. 文件夹创建与删除(1)在Windows文件管理器中,新建一个名为“实验文件夹”的文件夹。
(2)在“实验文件夹”上右击,选择“删除”,确认删除。
3. 文件与文件夹的复制、移动、重命名(1)将“实验文件.txt”复制到“实验文件夹”中。
(2)将“实验文件.txt”移动到桌面。
(3)将“实验文件.txt”重命名为“实验文件修改.txt”。
4. 文件属性的设置与修改(1)在“实验文件修改.txt”上右击,选择“属性”,设置文件属性为“只读”。
(2)修改“实验文件修改.txt”的属性为“隐藏”。
5. 文件搜索与查找(1)在Windows文件管理器中,输入“实验文件”进行搜索。
(2)使用“查找”功能,查找“实验文件修改.txt”。
6. 文件权限管理(1)在“实验文件夹”上右击,选择“属性”,点击“安全”标签。
(2)添加用户权限,设置权限为“完全控制”。
7. 文件压缩与解压(1)将“实验文件夹”压缩为“实验文件夹.zip”。
(2)解压“实验文件夹.zip”到指定位置。
五、实验结果与分析1. 文件创建与删除:实验成功创建和删除了文件,验证了文件管理的可行性。
2. 文件夹创建与删除:实验成功创建和删除了文件夹,验证了文件管理的可行性。
实验室程序文件(二)引言概述:实验室程序文件是在实验室环境中使用的关键文件,它们对于实验室的管理和操作起着重要的作用。
本文将详细介绍实验室程序文件的相关内容,并从以下五个大点进行阐述:文件的命名规则、文件的存储方式、文件的格式与结构、文件的更新与版本控制,以及文件的安全与备份。
正文:1. 文件的命名规则- 关键字命名法:使用简明的关键字来命名文件,以便在浏览文件时能够迅速找到所需的文件。
- 规范化命名法:遵循公司或实验室的统一命名规范,以保持文件命名的统一性和一致性。
- 版本号命名法:在文件名称中添加版本号,以便在文件更新时能够区分不同版本的文件。
2. 文件的存储方式- 按功能分类存储:将具有相同功能或用途的文件存放在同一个文件夹中,以便快速查找和管理。
- 按时间分类存储:将文件按照时间顺序存储,以便追溯历史版本或记录实验过程中的变化。
- 网络共享存储:通过网络将文件存储在中央服务器上,以便多人协作和远程访问。
3. 文件的格式与结构- 文件格式选择:选择适合实验室需求的文件格式,如文本文档、电子表格、图像文件等。
- 文件结构设计:根据实验室工作的特点,设计文件的结构和布局,使其具有清晰的层次结构和易于阅读的内容。
4. 文件的更新与版本控制- 定期更新:定期检查实验室程序文件,并对需要更新的文件进行相应修改和更新,以确保文件的准确性和有效性。
- 版本控制系统:使用版本控制系统来管理文件的不同版本,记录文件的修改历史和变更信息,以便追溯和回滚文件的变动。
5. 文件的安全与备份- 权限管理:设置文件的访问权限,确保只有授权人员才能查看和修改实验室程序文件。
- 定期备份:定期对实验室程序文件进行备份,以防止文件丢失或损坏,并保证实验室的正常运行。
结论:实验室程序文件是实验室管理和操作的重要组成部分。
通过遵守命名规则、合理存储文件、设计良好的格式和结构、进行定期更新与版本控制以及保证文件的安全与备份,可以有效地管理和优化实验室程序文件的使用和维护。
一、实验目的1. 理解文件系统的基本概念和原理。
2. 掌握文件系统的基本操作,如创建、删除、复制、移动等。
3. 学习文件系统的安全性和权限管理。
4. 提高文件管理的效率,确保文件的安全性和可靠性。
二、实验环境1. 操作系统:Windows 102. 文件系统:NTFS3. 实验软件:Microsoft Windows Explorer三、实验内容1. 文件系统的基本概念和原理2. 文件系统的基本操作3. 文件系统的安全性和权限管理4. 文件系统的备份与恢复四、实验步骤1. 文件系统的基本概念和原理(1)打开Windows Explorer,观察文件系统的结构,了解文件和文件夹的层次关系。
(2)分析文件系统的目录结构,了解目录、文件和路径的概念。
(3)学习文件系统的存储方式,了解文件系统的存储单元和数据组织。
2. 文件系统的基本操作(1)创建文件夹:在Windows Explorer中,右键单击目标位置,选择“新建”->“文件夹”,输入文件夹名称,按Enter键。
(2)删除文件:选中要删除的文件,右键单击,选择“删除”,确认删除。
(3)复制文件:选中要复制的文件,右键单击,选择“复制”,在目标位置右键单击,选择“粘贴”。
(4)移动文件:选中要移动的文件,右键单击,选择“剪切”,在目标位置右键单击,选择“粘贴”。
3. 文件系统的安全性和权限管理(1)设置文件夹权限:选中要设置权限的文件夹,右键单击,选择“属性”,在“安全”选项卡中,添加用户或组,设置权限。
(2)设置文件属性:选中要设置属性的文件,右键单击,选择“属性”,在“常规”选项卡中,设置只读、隐藏等属性。
4. 文件系统的备份与恢复(1)创建备份:在Windows Explorer中,右键单击要备份的文件夹,选择“发送到”->“压缩(zipped)文件夹”,将备份文件保存在指定位置。
(2)恢复备份:将备份文件解压,将解压后的文件夹内容复制到原位置。
一、实验目的1. 理解文件管理的基本概念和原理。
2. 掌握文件系统的组织结构和文件操作的基本方法。
3. 培养实际操作能力,提高文件管理的效率。
二、实验环境1. 操作系统:Windows 102. 文件管理工具:Windows自带的文件管理器三、实验内容1. 文件系统的基本概念和原理2. 文件系统的组织结构3. 文件操作的基本方法4. 文件夹的创建、删除、重命名等操作5. 文件和文件夹的搜索与查找6. 文件属性的查看和修改7. 文件和文件夹的复制、移动、粘贴等操作8. 文件和文件夹的压缩与解压缩9. 文件和文件夹的权限设置四、实验步骤1. 打开文件管理器,查看当前文件夹的结构。
2. 创建一个新的文件夹,命名为“实验文件夹”。
3. 在“实验文件夹”中创建一个文本文件,命名为“实验.txt”。
4. 打开“实验.txt”,输入以下内容:实验报告:文件管理实验5. 保存并关闭“实验.txt”。
6. 将“实验.txt”复制到“实验文件夹”中。
7. 将“实验.txt”移动到桌面。
8. 重命名“实验.txt”为“实验1.txt”。
9. 删除“实验1.txt”。
10. 搜索“实验文件夹”中的文件。
11. 查看文件属性。
12. 修改文件属性。
13. 压缩“实验文件夹”。
14. 解压缩“实验文件夹”。
15. 设置文件和文件夹的权限。
五、实验结果与分析1. 文件系统的基本概念和原理:通过实验,我们了解到文件系统是计算机中用于存储和管理文件的数据结构,包括文件、文件夹、磁盘等。
文件系统负责对文件进行组织、存储、检索、更新等操作。
2. 文件系统的组织结构:实验中,我们通过文件管理器查看当前文件夹的结构,了解到文件系统采用树状结构组织文件和文件夹。
3. 文件操作的基本方法:实验中,我们学习了文件和文件夹的创建、删除、重命名、复制、移动、粘贴等操作方法。
4. 文件和文件夹的搜索与查找:实验中,我们通过文件管理器搜索功能,快速找到所需的文件和文件夹。
实验二文件系统及磁盘管理1.文件系统管理一、实验目的●掌握Linux下文件系统的创建、挂载与卸载.●掌握文件系统的自动挂载。
二、项目背景某企业的Linux服务器中新增了一块硬盘/dev/sdb,请使用fdisk命令新建/dev/sdb1主分区和/dev/sdb2扩展分区,并在扩展分区中新建逻辑分区/dev/sdb5,并使用mkfs命令分别创建vfat和ext3文件系统。
然后用fsck命令检查这两个文件系统;最后,把这两个文件系统挂载到系统上.三、实验内容练习Linux系统下文件系统的创建、挂载与卸载及自动挂载的实现。
四、实验步骤子项目1.创建/dev/sdb1和/dev/sdb5●使用fdisk命令创建/dev/sdb1主分区.●使用fdisk命令创建/dev/sdb2扩展分区.●使用fdisk命令创建/dev/sdb5逻辑分区.●输入子命令w,把设置写入硬盘分区表,退出fdisk并重新启动系统。
●用mkfs命令在上述刚刚创建的分区上创建ext3文件系统和vfat文件系统。
●用fsck命令检查上面创建的文件系统.子项目2.挂载/dev/sdb1和/dev/sdb5●利用mkdir命令,在/mnt目录下建立挂载点,mountpoint1和mountpoint2.●把上述新创建的ext3分区挂载到/mnt/mountpoint1上。
●把上述新创建的vfat分区挂载到/mnt/mountpoint2上.●利用mount命令列出挂载到系统上的分区,查看挂载是否成功。
●利用umount命令卸载上面的两个分区。
子项目3.实现/dev/sdb1和/dev/sdb5的自动挂载●编辑系统文件/etc/fstab文件,把上面两个分区加入此文件中.●重新启动系统,显示已经挂载到系统上的分区,检查设置是否成功。
子项目4.挂载光盘和U盘●取一张光盘放入光驱中,将光盘挂载到/media/cdrom目录下。
查看光盘中的文件。
实验六:文件系统一、目的要求1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。
从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
2、要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
二、例题:①设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
②程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。
另外,为打开文件设置了运行文件目录(AFD)。
③为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
④算法与框图:a、因系统小,文件目录的检索使用了简单的线性搜索。
b、文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
c、程序中使用的主要设计结构如下:Ⅰ、主文件目录和用户文件目录(MFD、UFD)Ⅱ、打开文件目录(AFD)(即运行文件目录)三、调度算法的流程图四、文件管理源程序#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>typedef struct ufd{ char filename[10];/*文件名*/ char procode[8];/*属性*/int length;/*文件长度*/struct ufd *nextfile;/*指向下一个文件*/}UFD;typedef struct mfd{ char username[10];/*用户名*/struct ufd *link;/*指向该用户的第一个文件*/}MFD;typedef struct protected_flag{ char code[4];}PRO;typedef struct afd/*运行文件目录*/{ char filename[10];/*打开文件名*/char procode[4];int rwpointer;/*读写指针*/}AFD;PRO flag[3]={"100",/*只读*/"110",/*读写*/"001"/*可执行*/};UFD *rw_pointer;/*读写指针*/AFD *afd=NULL;MFD filesystem[10];int num;/*当前用户个数*/void displayallfile(){ int i;UFD *p;for(i=0;i<num;i++){printf("用户:%s 目录如下!\n",filesystem[i].username);p=filesystem[i].link;while(p){ printf("\t文件名: %s\t||",p->filename);printf("文件属性: %s\t||",p->procode);printf("文件长度: %d\n\n",p->length);p=p->nextfile;}}}void input() /*建立用户文件系统*/{ int i,j;int length;char filename[10];char procode[4];UFD *p1,*p2,*first;for(i=0;i<10;i++)filesystem[i].link=NULL;printf("用户号码:\n");scanf("%d",&num);for(i=0;i<num;i++)/*输入各用户名称*/{printf("输入第%d个用户名:\n",i+1);scanf("%s",filesystem[i].username);}for(i=0;i<num;i++)/*输入某用户的文件数据*/{j=1;printf(" 第%d个用户的文件如下\n",i+1);printf("文件%d:\n",j);printf("长度:");scanf("%d",&length);if(!length)continue;printf("文件名:");scanf("%s",filename);printf("文件属性(100只读,110读写,001可执行)");scanf("%s",procode);first=(UFD*)malloc(sizeof(UFD));first->nextfile=NULL;strcpy(first->filename,filename);strcpy(first->procode,procode);first->length=length;p1=p2=first;j++;while(1){printf("文件%d:\n",j);printf("长度:");scanf("%d",&length);if(!length)break;printf("文件名:");scanf("%s",filename);printf("属性(100只读,110读写,001可执行):");scanf("%s",procode);p2=(UFD*)malloc(sizeof(UFD));p2->nextfile=NULL;strcpy(p2->filename,filename);strcpy(p2->procode,procode);p2->length=length;j++;p1->nextfile=p2;p1=p1->nextfile; }filesystem[i].link=first; }displayallfile();}int findusername(char * username)/*返回用户名下标,当I=NUM时,用户不存在*/ { int i;i=0;while(i<num){if(!strcmp(filesystem[i].username ,username))break;i++;}return i;}UFD * findfilename(char *filename,UFD *filepointer){UFD *k;k=filepointer;while(k&&strcmp(filename,k->filename))k=k->nextfile;return k;}void displayfile(UFD *link){ UFD *p;p=link;if(!p){printf("\n此目录没有该文件!");return;}printf("\n用户文件如下:\n");while(p){printf("%s\t||",p->filename);printf("%s\t||",p->procode);printf("%d\n\n",p->length);p=p->nextfile;}}void createfile(){ char username[10];char filename[10];int i;UFD *p1,*p2,*newfile;if(num>=10)/*用户文件目录已满,创建文件失败*/{printf("用户文件目录已满\n创建文件失败!\n");return;}printf("输入用户名:\n");scanf("%s",username);i=findusername(username);/*返回用户名下标*/if(i==num)/*如果该用户不存在,且用户个数不小于10,先创建用户再建立用户文件*/{printf("用户不存在,请建立用户!\n");strcpy(filesystem[num].username ,username);/*创建用户目录*/num++;{newfile =(UFD *)malloc(sizeof(UFD));newfile->nextfile=NULL;filesystem[num-1].link=newfile;printf("文件名:");scanf("%s",filesystem[num-1].link->filename);printf("\n属性:");scanf("%s",filesystem[num-1].link->procode);printf("\n长度:");scanf("%d",&(filesystem[num-1].link->length));printf("\n文件已创建!\n");}}else/*为已存在的用户建立文件*/{p1=p2=filesystem[i].link ;printf("输入文件名:");scanf("%s",filename);while(p2){ if (!strcmp(p2->filename,filename)){ printf("文件名已存在,请输入新文件名!\n");scanf("%s",filename); }p1=p2;p2=p2->nextfile;}newfile=(UFD *)malloc(sizeof(UFD));newfile->nextfile=NULL;strcpy(newfile->filename,filename);printf("\n属性:");scanf("%s",newfile->procode);printf("\n长度:");scanf("%d",&(newfile->length));p1->nextfile=newfile;//printf("\n文件已创建!\n");}displayallfile();}void displayuser()/*显示用户目录*/{int i;if(num<=0)return;printf("\n用户目录如下! ");for(i=0;i<num;i++);printf("\n%s",filesystem[i].username);}void deletefile() /*删除文件*/{ int i;char username[10];char filename[10];UFD *p1,*p2;printf("\n输入用户名:\n");scanf("%s",username);i=findusername(username);//返回用户名下标if(i>=num){printf("用户不存在!\n删除失败!");return ;}else{printf("\n输入文件名:");scanf("%s",filename);p1=p2=filesystem[i].link;while(p2&&strcmp(p2->filename,filename)){p1=p2;p2=p2->nextfile;}if(!p2)printf("\n文件不存在!\n删除失败!\n");else{if(p1==p2)filesystem[i].link=p1->nextfile;elsep1->nextfile=p2->nextfile;delete(p2);printf("文件已删除!\n");}}displayallfile();}AFD * openfile(){ char username[10];char filename[10];int i;UFD *p=NULL;AFD *k=NULL;/*为打开的文件设置了运行文件目录*/ printf("输入用户名:\n");scanf("%s",username);i=findusername(username);/*返回用户名下标*/if(i>=num){printf("\n用户不存在!\n不能打开文件!\n");return NULL;}else/*用户存在*/{printf("\n输入文件名:");scanf("%s",filename);p=findfilename(filename,filesystem[i].link);if(!p)/*用户文件不存在*/{printf("\n文件不存在!\n");return NULL;}else{afd=(AFD *)malloc(sizeof(AFD));strcpy(afd->filename,p->filename);strcpy(afd->procode,p->procode);afd->rwpointer=0;printf("\n文件已打开!\n");rw_pointer=p;/*为了读文件保留指针*/printf("\t文件目录AFD:\n"); /*打开运行文件目录AFD*/ printf("\t文件名: %s\n",afd->filename);printf("\t属性: %s\n",afd->procode);printf("\t读写指针: %d\n",afd->rwpointer); }}return afd; }void closefile(){ if(!afd){printf("\n没有文件打开!\n");return; }delete(afd);afd=NULL;printf("\n文件已关闭!\n");}void readfile()//{AFD *p;p=openfile();if(!p)return;if(strcmp(p->procode,"100")&&strcmp(p->procode,"110")) printf("\nfile:%s 文件不可读!\n",p->filename);/*操作*/ else{printf("已读取文件!\n");printf("\t文件名:%s\n",p->filename);printf("\t属性:%s\n",p->procode);printf("\t读写指针:%d\n",rand()%rw_pointer->length); }closefile();/*关闭文件*/}void writefile(){AFD *p;/*运行文件目录*/UFD *k;p=openfile();k=rw_pointer;if(!p)return;if(strcmp(p->procode,"110")){printf("\nfile:%s 该文件不能写!\n",p->filename);return; }else{ p->rwpointer=rand()%k->length;k->length=p->rwpointer ;/*修改读书指针写回文件*/}printf("\n已完成写操作!\n");printf("\t文件名: %s\n",k->filename);printf("\t属性: %s\n",k->procode);printf("\t长度: %d\n",k->length);closefile();}void executefile(){AFD *p;p=openfile();if(!p){printf("\n文件不存在!\n");return;}if(strcmp(p->procode,"001")){printf("\n该文件不能执行!\n");printf("\n文件属性为不可执行文件!\n");return;}else{closefile();printf("\n文件执行完毕!"); }}void menu(){printf("------------------------------------------------------------------------------\n");printf(" <文件管理> \n");printf("------------------------------------------------------------------------------\n");printf(" MENU :\n");printf("\t\tmenu----------显示菜单\n");printf("\t\topen----------打开文件\n");printf("\t\tclose---------关闭文件\n");printf("\t\tcreate--------创建文件\n");printf("\t\tread----------读文件\n");printf("\t\twrite---------写文件\n");printf("\t\texecute-------执行文件\n");printf("\t\tdelete--------删除文件\n");printf("\t\tdisplay--------显示文件列表\n");printf("\t\texit--------退出\n");printf("\t注意:输入时当文件长度为0时表示该用户的文件输入结束!\n"); printf("------------------------------------------------------------------------------\n");}void fileoperation()/*文件基本操作*/{char str[10];int sort;while(1){printf("输入命令:\n");printf(">>");scanf("%s",str);if(!strcmp(str,"create"))sort=1;elseif(!strcmp(str,"delete"))sort=2;elseif(!strcmp(str,"read"))sort=3;elseif(!strcmp(str,"write"))sort=4;elseif(!strcmp(str,"execute"))sort=5;elseif(!strcmp(str,"open"))sort=6;elseif(!strcmp(str,"close"))sort=7;elseif(!strcmp(str,"menu"))sort=8;elseif(!strcmp(str,"display"))sort=9;elseif(!strcmp(str,"exit"))sort=10;elsesort=0;switch(sort){case 1:createfile();break;case 2:deletefile();break;case 3:readfile();break;case 4:writefile();break;case 5:executefile();break;case 6:openfile();break;case 7:closefile();break;case 8:menu();break;case 9: displayallfile();break;case 10: return;default:break; }}}void main(){ menu();input();fileoperation();}。