操作系统课程设计-文件管理实验报告剖析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

操作系统课程实验报告2013~2014年度第1学期院系:学号:姓名:任课教师:成绩评定:实验一题目:文件管理完成日期:年月日1、实验目的了解文件管理的功能和任务,理解文件系统组成和特点,熟悉文件系统的访问和操作。实验要求用高级语言编写和调试一个简单的模拟文件管理程序。加深理解有关盘块的分配与回收、目录管理等的具体实施策略。2.、实验内容模拟一个资源管理器进行文件操作,包括建立和删除目录、建立和删除文件等基本文件操作。建立相应的数据结构(如:位示图等),模拟盘块管理。可以参照图6界面进行设计。3、算法设计1)、定义主面板MainFrame,布局好各个控件,并初始化/**往node节点下添加一个子节点obj;*/publicvoidaddChild(Objectobj,DefaultMutableTreeNodenode){if(obj!=null&&node!=null){DefaultMutableTreeNodetemp=newDefaultMutableTreeNode(obj);if(node.getAllowsChildren())node.add(temp);if(!((String)obj).equals(A:\\)&&((String)obj).length()=3)//防止读取A软驱,会出现异常;用于初始用的;addChildren(cmd.listAll((String)obj),temp);}}/**在node节点下添加数组children;*/publicvoidaddChildren(String[]children,DefaultMutableTreeNodenode){if(children!=null&&node!=null){for(inti=0;ichildren.length;i++){addChild(children[i],node);}}}/**对树的节点进行预提取;*/publicvoidaddPrefetchChildren(Stringpath,DefaultMutableTreeNodenode){addChildren(cmd.listDirectory(path),node);}/**对路径路径进行连接;(已经获得了所有的整个路径,需要量转化)*/publicStringtoFilePath(Stringstr){//先去掉头尾的[];Stringpa=str.substring(1,str.length()-1);String[]temp=pa.split(,);Stringpath=;for(inti=1;itemp.length;i++){if(!path.endsWith(\\)&&!path.equals())//不为空是为去根节点;path+=\\;path+=temp[i];}returnpath;}publicStringtoPFilePath(Stringstr){//先去掉头尾的[];Stringpa=str.substring(1,str.length()-1);String[]temp=pa.split(,);Stringpath=;for(inti=1;itemp.length-1;i++){if(!path.endsWith(\\)&&!path.equals())//不为空是为去根节点;path+=\\;path+=temp[i];}returnpath;}publicclassExpandListenerimplementsTreeWillExpandListener{/**树展开及收缩监听;*/privateMainFramemainFrame=null;publicExpandListener(MainFramemainFrame){this.mainFrame=mainFrame;}publicvoidtreeWillExpand(TreeExpansionEventevent){//对节点的路径进行转化Stringpath=toFilePath(event.getPath().toString());TreePathtreePath=event.getPath();DefaultMutableTreeNodenode=(DefaultMutableTreeNode)treePath.getLastPathComponent();//System.out.println(所展开节点的路径:+path);//System.out.println(treePath);if(node.getDepth()2){Enumerationchildren=node.children();StringfilePath=;while(children.hasMoreElements()){DefaultMutableTreeNodetemp=(DefaultMutableTreeNode)children.nextElement();filePath=;filePath=path;if(!filePath.endsWith(\\))filePath+=\\;filePath+=temp.toString();//System.out.println(temp=+filePath);mainFrame.addPrefetchChildren(filePath,temp);}}}2)、添加功能“添加文件(夹)addframe()”、“修改文件(夹)mvframe()”publicvoidaddframe(){JFrameaddFrame=newJFrame();JLabeljlbl=newJLabel(请输入要添加的文件(夹)名:);addrs=newJLabel();addrs.setBounds(180,10,100,25);jlbl.setBounds(10,10,170,25);addfile=newJTextField();addfile.setBounds(10,40,260,25);btnaddf=newJButton(添加文件);btnaddd=newJButton(添加文件夹);btnaddf.setBounds(20,80,100,25);btnaddd.setBounds(160,80,100,25);btnaddf.addActionListener(this);btnaddd.addActionListener(this);addFrame.add(jlbl);addFrame.add(addrs);addFrame.add(addfile);addFrame.add(btnaddf);addFrame.add(btnaddd);addFrame.setBounds(400,350,300,150);addFrame.setTitle(添加文件(夹));addFrame.setLayout(null);addFrame.setVisible(true);}publicvoidmvframe(){JFramemvFrame=newJFrame();JLabeljlbl=newJLabel(请输入修改后的文件名:);mvrs=newJLabel();mvrs.setBounds(160,10,140,25);jlbl.setBounds(10,10,170,25);mvfile=newJTextField();mvfile.setBounds(10,40,260,25);btnmvf=newJButton(修改文件名);btnmvd=newJButton(修改文件夹名);btnmvf.setBounds(10,80,120,25);btnmvd.setBounds(150,80,120,25);btnmvf.addActionListener(this);btnmvd.addActionListener(this);mvFrame.add(jlbl);mvFrame.add(mvrs);mvFrame.add(mvfile);mvFrame.add(btnmvf);mvFrame.add(btnmvd);mvFrame.setBounds(400,350,300,150);mvFrame.setTitle(修改文件(夹)名);mvFrame.setLayout(null);mvFrame.setVisible(true);}}3)显示文件*显示系统中的所有盘符;publicString[]ListDisks(){Fileroots[]=File.listRoots();//根盘符;Stringdisks[]=newString[roots.length];for(inti=0;iroots.length;i++){disks[i]=roots[i].toString();}returndisks;}*获得路径path下的文件;publicString[]listAll(Stringpath){try{Filef=newFile(path);String[]fileName;Stringtmp=null;mainFrame.fileshow.setText(null);mainFrame.filestyle.setText(null);if(f.isDirectory()){fileName=f.list();//System.out.println(共有+fileName.length+个文件);for(inti=0;ifileName.length;i++){mainFrame.fileshow.append(fileName[i]+'\n');tmp=path+'\\'+fileName[i];//System.out.println(tmp);if(listDirectory(tmp)!=null){mainFrame.filestyle.append(文件夹\n);}else{mainFrame.filestyle.append(文件\n);}}returnfileName;}elseif(f.isFile()){System.out.println(这是一个文件);returnnull;}else{//System.out.println(path);returnnull;}}catch(Exceptione){returnnull;}}publicString[]listDirectory(Stringpath){Filef=newFile(path);String[]fileName;if(f.isDirectory()){fileName=f.list();returnfileName;}else{//System.out.println(path+是文件);returnnull;}}*进行md操作;md目录名功能:创建新目录publicvoidmd(Stringdirectory){if(!mainFrame.currentPath.equals()){Stringtemp=mainFrame.currentPath+\\+directory;FilenewFile=newFile(temp);if(!newFile.exists()){try{if(newFile.isDirectory()==false){newFile.mkdirs();System.out.println(文件夹创建成功!);}else{System.out.println(文件夹创建出错!);}}catch(Exceptione){System.out.println(出错信息:+e.getMessage());}}else{System.out.println(文件夹已经存在);}}}*进行rd操作;rd目录名功能:删除目录;publicvoiddel(){Stringtemp=mainFrame.

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功