操作系统课程设计文件管理实验报告11Word文档格式.docx
- 文档编号:5724435
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:1,018.20KB
操作系统课程设计文件管理实验报告11Word文档格式.docx
《操作系统课程设计文件管理实验报告11Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计文件管理实验报告11Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
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!
for(inti=0;
i<
children.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;
temp.length;
path.endsWith("
!
path.equals("
))//不为空是为去根节点;
path+="
path+=temp[i];
returnpath;
publicStringtoPFilePath(Stringstr){
temp.length-1;
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();
请输入修改后的文件名:
mvrs=newJLabel("
mvrs.setBounds(160,10,140,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;
roots.length;
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;
fileName.length;
mainFrame.fileshow.append(fileName[i]+'
\n'
tmp=path+'
\\'
+fileName[i];
//System.out.println(tmp);
if(listDirectory(tmp)!
mainFrame.filestyle.append("
文件夹\n"
}else{
文件\n"
}
returnfileName;
}elseif(f.isFile()){
System.out.println("
这是一个文件"
returnnull;
}else{
//System.out.println(path);
}catch(Exceptione){
returnnull;
publicString[]listDirectory(Stringpath){
Filef=newFile(path);
String[]fileName;
if(f.isDirectory()){
fileName=f.list();
returnfileName;
}else{
//System.out.println(path+"
是文件"
*进行md操作;
md<
目录名>
功能:
创建新目录
publicvoidmd(Stringdirectory){
if(!
mainFrame.currentPath.equals("
)){
Stringtemp=mainFrame.currentPath+"
+directory;
FilenewFile=newFile(temp);
newFile.exists()){
try{
if(newFile.isDirectory()==false){
newFile.mkdirs();
System.out.println("
文件夹创建成功!
文件夹创建出错!
}catch(Exceptione){
System.out.println("
出错信息:
+e.getMessage());
文件夹已经存在"
*进行rd操作;
rd<
删除目录;
publicvoiddel(){
Stringtemp=mainFrame.currentPath;
Filefile=newFile(temp);
if(file.exists()){
if(file.delete()){
mainFrame.fileshow.setText("
文件(夹)删除成功!
文件(夹)删除操作出错!
mainFrame.fileshow.setText("
文件(夹)不存在"
*进行edit操作:
edit<
文件名>
新建文件
publicvoidedit(Stringfile){
+file;
if(newFile.exists()){
mainFrame.addrs.setText("
文件已经存在!
文件已经存在!
newFile.createNewFile();
mainFrame.addrs.setText("
文件创建成功!
文件创建成功!
文件创建失败:
publicvoidmvf(Stringfile){
mainFrame.PPath.equals("
Stringtemp=mainFrame.PPath+"
FilenewFile=newFile(mainFrame.currentPath);
if(newFile.renameTo(newFile(temp))==true){
mainFrame.mvrs.setText("
修改文件名成功!
}else{
存在同名文件!
publicvoidmvd(Stringdir){
+dir;
修改文件夹名成功!
存在同名文件夹!
4、运行与测试
运行时,弹出主界面
双击文件盘C
在E盘路径添加文件夹操作系统,再添加文件操作系统
如果文件已存在会显示
可以更改文件名称
删除文件,不过有个BUG,要文件一层层删,才可以删除。
可以显示目录路径
5、总结与心得
我们每天都在用文件系统,已经习惯了有文件路径寻找的方便,每次找文件时,感觉好容易,可实际去设计这个程序时,却很难。
用树形结构图去设计,要有较好的全局思想,而且一些节点的分配。
在设计此系统时,发觉自己对文件系统理解得不够透彻。
不知道如何来具体设计这个实验,后来耐心回到本学期学习的课本内容上,再次翻看了大二第一学期所学的数据结构的书,才觉悟对文件系统的理解,总而言之,操作系统的设计,不仅提升了自己的程序设计及编写技巧,更大大地加深了对操作系统的文件管理的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 文件 管理 实验 报告 11
![提示](https://static.bingdoc.com/images/bang_tan.gif)