




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统原理课程设计报告专 业 计算机科学信息与技术 班 级 计算机10-2 学 号 10034050247 姓 名 庞水连 指导教师 许波 完成时间 2012.09.14 成 绩 小型文件系统设计一、设计目的1.通过设计一个小型文件系统,加深对文件系统的内部功能和内部实现。2.结合数据结构、程序设计、计算机原理等课程的知识,设计一个文件管理系统,进一步理解操作系统。3.通过对实际问题的分析与解决、编程实现,提高学生实际应用与编程的能力。二、设计要求1.文件系统中至少要求能够实现文件的建立、打开、读写、执行、属性修改等基本功能。2.要求界面简单、易懂,关键代码部分要注释。3.编程语言可以采用自己任意精通的语言。三、设计思想说明如今,电脑越来越普及,人们将越来越多的文件存储在电脑里。如果没有定期地对系统文件进行分类、删除,系统文件会越来越多,导致内存不足,查找麻烦。文件管理系统为了方便管理文件而设计,通过本系统可以快速地实现文件的建立、打开、关闭、读写、删除等功能。四、系统结构的说明文件管理系统主要由登录、操作、退出三个模块组成,系统的功能结构如下:登录输入用户名选择操作 1.列出所有文件2.创建文件 3.删除文件4.打开文件5.关闭文件 6.读文件7.写文件8.关闭操作 五、数据结构的说明(模块中参考了File类、FileInputStream类和FileOutputStream类)1. File类File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除和移动文件等功能。File类提供了多种构造函数,本模块主要应用了第1种构造函数来创建File对象。语法:File file = new File(String pathName);参数说明:PathName:指定路径名称。例如:File file = new File(D:/name.txt ); File类中提供了文件操作的常用方法,例如本模块中用到了新建文件(文件夹)、文件删除等方法。createNewFile()当指定抽象路径中不包含指定文件时,会创建文件。如果抽象路径中包含该文件,不会创建文件。例如本模块实现新建文件的方法中,首先判断指定文件夹目录下是否存在指定文件,如果不存在则调用createNewFile()方法创建文件,关键代码如下:File file = new File(myFileName);if(!file.exists()file.createNewFile();mkdir()创建此抽象路径中指定文件目录。本模块中创建文件夹通过该方法实现,关键代码如下:String filePath = strPath;File myFilePath = new File(filePath);if(!myFilePath.exists()myFilePath.mkdir(); delete()删除文件或文件夹方法,如果要删除指定文件夹,必须保证删除的文件夹为空,才能进行删除。例如本模块中删除整个文件夹的方法deleteDirs(),关键代码如下: public void deleteDirs(File file)if(file.exists()/如果该文件存在if(file.isFile()/并且是文件对象file.delete();/将文件删除else if(file.isDirectory()/如果该文件对象是路径File files = file.listFiles();/遍历文件中的文件对象for(int i = 0;i0)for (int i = 0; i file.length; i+) /循环遍历数组if (filei.isDirectory() /如果数组中某个元素是一个路径getFileList(filei.getAbsolutePath();/重新调用本方法 else filelist.add(filei);2.FileInputStream类和FileOutputStream类FileInputStream类和FileOutputStream类提供了文件操作的基本功能,FileInputStream类提供了读取文件的能力,FileOutputStream类提供了写入文件的基本能力。FileInputStream类通过read()方法读取文件信息,FileOutputStream类通过write()方法向文件写入内容。例如在本模块中实现复制文件时,首先通过FileInputStream类对文件进行读取,再通过FileOutputStream类将文件写入另一个文件中。关键代码如下:public void copyFile(String oldPath, String newPath) try int bytesum = 0;int byteread = 0;File oldfile = new File(oldPath);if (oldfile.exists() / 文件存在时 /读入原文件 InputStream inStream = new FileInputStream(oldPath); / 写入文件 FileOutputStream fs = new FileOutputStream(newPath); byte buffer = new byte1444;/指定byte数组 /循环获取要读入文件的字节大小 while (byteread = inStream.read(buffer) != -1) bytesum += byteread; / 字节数 文件大小fs.write(buffer, 0, byteread); inStream.close(); catch (Exception e) e.printStackTrace();六、程序清单import java.io.*; public class MyFileSystem static String data=new String106; static String userName= 1,2,3,4,5,6,7,8,9,a; static String commond=null; static String file=new String6; static int emptyNumber=0; static int fileNumber=10; static BufferedReader input=new BufferedReader(new InputStreamReader(System.in); /主函数 public static void main(String args) throws IOException System.out.println(欢迎使用这个文件系统!); String username1=null; for(int i=0;i10;i+) for(int j=0;j6;j+) dataij=; while(true) System.out.println(n登陆请输入:loginn退出请输入:exit); System.out.println(请输入:); String login=null; login=input.readLine(); if(login.trim().equals(login) System.out.println(请输入用户名:); username1=input.readLine(); while(true) int i=0; for(i=0;i10;i+) if(username1.trim().equals(userNamei) System.out.println(你已经成功登陆了!); commandFS(username1.trim(); break; if(i!=10) break; System.out.println(不存在该用户!请重新输入:); username1=input.readLine(); else if(login.trim().equals(exit) System.out.println(欢迎再次使用这个文件系统!); return; public static void commandFS(String username)throws IOException String choice=null; while(true) System.out.println(n请选择1-8进行操作:); System.out.println(t1.查看所有文件); System.out.println(t2.创建文件); System.out.println(t3.删除文件); System.out.println(t4.打开文件); System.out.println(t5.关闭文件); System.out.println(t6.读文件); System.out.println(t7.写文件); System.out.println(t8.关闭操作); System.out.println(t请选择:); choice=input.readLine(); switch(Integer.parseInt(choice) case 1: listAllFiles(username);break; case 2: createFile(username);break; case 3: deleteFile(username);break; case 4: openFile(username);break; case 5:closeFile(username);break; case 6:readFile(username);break; case 7:writeFile(username);break; case 8:return; default: System.out.println(您的输入不正确,请重新输入:); choice=input.readLine(); /查看所有文件 static void listAllFiles(String username) int m=0; System.out.println(文件名+t+用户名+t+文件长度+t+只读1/可读写2+t+状态); for(int i=0;i10;i+) if(datai1.equals(username) for(int j=0;j5;j+) System.out.print(dataij+t+ ); if(j=4) System.out.println(); m+; if(m=0) System.out.println(t没有目录项!); else System.out.println(t文件个数+m); /创建文件 static void createFile(String username)throws IOException if(emptyNumber!=10) while(true) System.out.println(请输入文件名:); file0=input.readLine().trim(); file1=username; for(int i=0;i10;i+) if(file0.equals(datai0)&file1.equals(datai1) System.out.println(文件名冲突,请重新输入:); file0=input.readLine().trim(); System.out.println(您已经成功创建该文件!); file4=open; while(true) System.out.println(请设置读写属性: 1.只读 2.可读写); commond=input.readLine(); if(commond.equals(1)|commond.equals(2) file3=commond.trim(); break; System.out.println(文件+file0+已经打开!); System.out.println(请输入文件初始数据:); file5=input.readLine().trim(); file2=String.valueOf(file5.length(); for(int j=0;j6;j+) dataemptyNumberj=filej; file5=close; dataemptyNumber4=close; System.out.println(文件+file0+已经关闭!); fileNumber-; emptyNumber+; break; else System.out.println(该用户创建的文件已到10个,不能再创建!); /删除文件 static void deleteFile(String username) throws IOException System.out.println(请输入要删除的文件名:); file0=input.readLine().trim(); file1=username; int i=0; for(i=0;i10;i+) if(datai0.equals(file0)&datai1.equals(file1) System.out.println(确定删除?yes/no); commond=input.readLine().trim(); while(true) if(commond.trim().equals(yes) for(int j=0;j6;j+) filej=; dataij=; System.out.println(该文件已经成功删除!); emptyNumber+; fileNumber-; break; else if(commond.trim().equals(no) System.out.println(该文件没有被删除!); break; commond=input.readLine().trim(); break; if(i=10) System.out.println(您输入的文件不存在!); /打开文件(负责以下所有模块) static void openFile(String username) throws IOException System.out.println(请输入要打开的文件名:); file0=input.readLine().trim(); int i=0; for(i=0;i10;i+) if(datai4.equals(open)&datai0.equals(file0) System.out.println(文件+file0+已经在内存中打开,请先关闭!); break; else if(datai0.equals(file0)&datai1.equals(username) for(int j=0;j5;j+) filej=dataij; file4=open; datai4=open; System.out.println(文件+file0+已经打开!); break; else if(i=9) System.out.println(文件名不存在!); break; /关闭文件 static void closeFile(String username) throws IOException System.out.println(请输入要关闭的文件名:); file0=input.readLine().trim(); int i=0; for(i=0;i10;i+) if(datai4.equals(open) System.out.println(文件+file0+已经在内存中处于关闭状态,不需要在进行关闭了!); break; else if(datai0.equals(file0)&datai1.equals(username) datai4=close; System.out.println(文件+file0+已经关闭!); break; else if(i=9) System.out.println(文件名不存在!); break; /读文件 static void readFile(String username) throws IOException System.out.println(请输入要读入的文件名:); file0=input.readLine().trim(); for(int i=0;i10;i+) if(datai0.equals(file0)&datai1.equals(username) for(int j=0;j6;j+) filej=dataij; if(file4.equals(close) System.out.println(文件没有打开!); break; else if(file4.equals(open) System.out.println(file5); break; /写文件 static void writeFile(String username) throws IOException System.out.println(请输入要读写的文件:); file0=input.readLine().trim(); String changeString=; for(int i=0;i10;i+) if(datai0.equals(file0)&datai1.equals(username) for(int j=0;j6;j+) filej=dataij; if(file4.equals(close) System.out.println(文件没有打开!); break; else if(file4.equals(open) if(file3.equals(1) System.out.println(只读文件,不能修改!); break; else System.out.println(请输入修改数据:); changeString=input.readLine().trim(); while(true) System.out.println(修改选择: 1.覆盖 2.追加); commond=input.readLine().trim(); if(commond.equals(1) file5=changeString; file2=String.valueOf(file5.len
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆生产企业安全培训课件
- 初期汽车考试题库及答案
- 保健酒业考试真题及答案
- 江苏农业新质生产力热潮涌动
- 个人如何面对新质生产力
- 新质生产力发展路径与实践指南
- 城市管理新质生产力
- 校园篮球联赛策划方案
- 新质生产力最核心的表述
- 美国视角下的新质生产力
- 2025年国家电网公司招聘岗位竞聘模拟题及答案
- 隧道施工应急预案与响应方案
- 2025年广播电视技术能手预选赛竞赛试题含答案
- 2025年健身教练专业技能测评考试试题及答案解析
- 2025年山东高考化学试题及答案
- 2025-2026北师大版二年级数学上册(全册)教案设计
- 环卫人员安全知识培训课件
- 新学期,新征程+课件-2025-2026学年高二上学期开学第一课主题班会
- 公司适用法律法规标准清单2025年08月更新
- 医院信息化建设中长期规划(十五五规划2025年)
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
评论
0/150
提交评论