操作系统课程设计文件管理实验报告剖析docWord文档格式.docx
《操作系统课程设计文件管理实验报告剖析docWord文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计文件管理实验报告剖析docWord文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
操作。
建立相应的数据结构(如:
位示图等),模拟盘块管理。
可以参照图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){
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;
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];
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();
共有"
+fileName.length+"
个文件"
for(inti=0;
fileName.length;
mainFr