java课程设计文件管理系统.docx
- 文档编号:9367379
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:24
- 大小:194.51KB
java课程设计文件管理系统.docx
《java课程设计文件管理系统.docx》由会员分享,可在线阅读,更多相关《java课程设计文件管理系统.docx(24页珍藏版)》请在冰点文库上搜索。
java课程设计文件管理系统
课程设计
课程设计名称:
java课程设计
专业班级:
计科卓F1201班级
学生姓名:
陈张涛
学号:
201216010109
指导教师:
郑丽萍
课程设计时间:
2014。
6.30-2014.7。
11
目录-———--—-——--—-—-----—---1
课程设计任务书—-——---———--—---————-—-—-2
一、需求分析-—-———-————-——-—-————-———3
二、概要设计————--——---—--——--———-——-4
三、开发语言-—----—-——--—-—---——-————4
四、详细设计———-————-——--—-—--—-—-—-4
五、调试与分析——---—-———--————--——--—--13
六、功能测试-—--——————-—--——-—-—-—-—-14
七、结论与心得--——-—------—-—————-——--—-15
八、参考资料------—---—-—-—---—-—————-16
九、成绩评价表—----——---—--—-————-—---——17
计算机科学技术(卓越计划)专业课程设计任务书
学生姓名
陈张涛
专业班级
计科卓F1201
学号
201216010109
题目
文件管理系统
课题性质
工程设计
课题来源
自拟课题
指导教师
郑丽萍
同组姓名
无
主要内容
该课题通过用户图形界面实现对文件和文件夹的管理,主要功能包括对指定文件夹中的内容进行复制、压缩,解压,剪切,删除,重命名等。
所涉及的系统需要考虑各种输入输出异常处理,并具有现良好的交互能力,使文件管理更加简便有效
任务要求
1。
按照内容要求,分析java文件管理功能,查阅有关文献,完成复制、压缩,解压等各种管理的设计。
2。
应用java技术进行文件管理开发,并对相应的文件进行测试,完成文件管理系统。
3。
按照课程设计上机安排,在规定时间上机,上机考勤情况计入总成绩。
4.结合设计和开发内容,完成课程设计报告。
要求语言表达逻辑合理,图表清晰,准确表达课程设计内容和结果。
参考文献
[1]明日科技.Java从入门到精通(第3版),清华大学出版社,2012
[2](美)霍斯特曼,科内尔著,周立新等译。
Java核心技术卷1基础知识(原书第9版),机械工业出版社,2014
[3](美)埃克尔.Java编程思想(第4版).机械工业出版社,2007
[4](美)梁勇,李娜.Java语言程序设计:
进阶篇(原书第8版),机械工业出版社,2011
审查意见
指导教师签字:
教研室主任签字:
2014年6月15日
文件管理系统
一、需求分析
题目要求对文件进行复制,压缩,解压等操作,相当于一个简单的文管理系统。
对此我新加了剪切,删除,和重命名等功能。
程序的整体输入控制是采用图形用户界面,同时为了减少用户输入时不必要的错误,程序还支持文件选择器功能,用户可以直接点击相应的按钮选择相应的文件或文件夹。
(1)复制功能实现了将文件复制到指定的文件夹中(包括文件夹的复制和单个文件的复制),同时允许用户选择不同类型的文件复制.其中有全文件复制(文件夹里所有文件全部复制)、无空文件夹的文件复制(即复制的文件夹不含空文件夹)、指定参数的文件复制(即文件夹复制时可以指定相应的类型参数doc、txt等选择要被复制的文件类型)。
(2)压缩功能实现将文件压缩到指定路径(包括单个文件的压缩和文件夹的压缩)。
(3)解压功能实现将指定的压缩文件解压到指定的路径
(4)剪切功能实现将制订文件夹下的文件剪切到制订的文件夹下,与复制不同的,剪切后该文件只存在于剪切后的文件夹。
(5)删除功能实现了文件的删除和文件夹删除,其中文件的删除可以直调用文件的方法删除文件,而文件夹的删除必须递归删除文件夹中的所有文件,然后再层层调用方法删除文件夹。
(6)重命名功能实现对指定文件夹下的文件的重命名,如果该文件夹下已经存在该文件名,则提示重新命名
二、概要设计
图2—1设计模块图
创建Menu对象
选择功能
创建Copy创建Zip创建Unzip创建Cut创建Delete创建Rename
调用compactFile调用UnzipchangeDirectoryrenameFile
调用copy调用empty调用extcopy调用delFile调用delDir
图2—2系统流程图
三、运行环境、开发语言
Eclipse、Java
四、详细设计
1程序清单
表4-1主要列出了各个文件实现的功能
表4—1程序清单
文件名
功能
Copytest.java
实现功能类,包含所有功能所需的方法
Menu.java
图形界面—菜单界面
Copy.java
图形界面—复制界面
Zip.java
图形界面—压缩界面
Unzip.java
图形界面—解压界面
Cut.java
图形界面-剪切界面
Delete。
java
图形界面-删除界面
Rename。
java
图形界面—重命名界面
表4-2主要列出Copytest.java文件中各个方法的所实现的功能。
其余文件的方法基本都是用于图形用户界面的设置,在此就不一一例举。
表4-2Copytest.java中方法清单
方法名
功能
doCopy(Stringpath1,
Stringpath2,Stringname)
单个文件复制
copy(Stringfrompath,Stringtopath)
无参数文件夹复制(含空文件夹)
emptycopy(Stringfrompath,Stringtopath)
无参数文件夹复制(不含空文件夹)
extcopy(Stringfrompath,Stringtopath,String[]temp)
参数限制的文件复制
compactFile(Stringsource,Stringtarget)
文件压缩,调用文件夹压缩方法和文件压缩方法
recursionFile(Stringfilepath,Stringorigin)
递归调用文件,同时实现对文件夹的压缩
ZipFile(Filefile,Stringorigin)
压缩单个文件
Unzip(Stringsource,Stringtarget)
解压文件
delFile(Stringfilepath)
删除单个文件
delDir(Stringpath)
删除一个文件夹
renameFile(Stringpath,Stringoldname,Stringnewname)
重命名文件
changeDirectory(Stringfilename,Stringoldpath,Stringnewpath)
将文件剪切到指定文件夹
2主要代码
2.1菜单界面
运行程序时会弹出一个菜单界面,供用户选择相应的文件操作.包括复制、压缩、解压、剪切、删除、重命名.该功能截图如图2-1所示.
图4-1菜单功能界面
2.2复制界面
点击复制选项,会弹出窗口,如图4-2所示。
在文本框里输入相应信息,或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,如图4-3所示。
具体代码如下:
图4—2文件复制图4-3文件选择器选择文件
(1)复制功能代码,用于调用
//单个文件复制,用于调用
publicstaticvoiddoCopy(Stringpath1,Stringpath2,Stringname){
Readerin=null;
Writerout=null;
try{
in=newFileReader(path1+"/”+name);
out=newFileWriter(path2+"/”+name);
intlen=0;
char[]c=newchar[1024];
while((len=in.read(c))!
=-1){
out。
write(c,0,len);
}
}catch(IOExceptione){
e。
printStackTrace();
}finally{
try{
in.close();
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
(2)无参数的文件复制,递归遍历文件夹,调用doCopy()方法实现复制
//无参数文件夹复制(含空文件夹)
publicstaticvoidcopy(Stringfrompath,Stringtopath){
Fileffile=newFile(frompath);
File[]fs=ffile.listFiles();
if(fs!
=null){
for(Filef:
fs){
if(f.isDirectory()){
newFile(topath+"/”+f。
getName())。
mkdirs();
copy(f.getAbsolutePath(),topath+"/”+f.getName());
}
else{
doCopy(frompath,topath,f.getName());//执行文件复制操作
}
}
}
}
(3)功能是在全文件复制的基础上改动的,在方法中增加判断语句,如果是空文件夹就不复制。
//无空文件夹的复制
publicstaticvoidemptycopy(Stringfrompath,Stringtopath){
Fileffile=newFile(frompath);
File[]fs=ffile.listFiles();
if(fs!
=null){
for(Filef:
fs){
if(f.isDirectory()){
if((f.listFiles()).length〉0){
newFile(topath+"/"+f.getName()).mkdirs();
emptycopy(f.getAbsolutePath(),topath+"/”+f。
getName());
}
}
else{
doCopy(frompath,topath,f.getName());//执行文件复制操作
}
}
}
}
(4)从用户输入操作获取要被复制的文件类型,然后通过数组传递参数,根据参数来限制复制的文件类型
//有参数限制的文件复制
publicstaticvoidextcopy(Stringfrompath,Stringtopath,String[]temp){
Filefromfile=newFile(frompath);
File[]fs=fromfile.listFiles();
if(fs!
=null){
for(Filef:
fs){
//如果是文件夹则进行递归调用
if(f.isDirectory()){
if((f.listFiles()).length〉0){
newFile(topath+”/"+f。
getName()).mkdirs();
extcopy(f。
getAbsolutePath(),topath+”/”+f。
getName(),temp);
}
}
//如果是文件则进行判断
else{
for(inti=0;i length;i++){ if(f.getName()。 endsWith(temp[i])){//过滤不符合要求的文件 doCopy(frompath,topath,f.getName());//执行文件复制操作 } } } } } } 2.3压缩界面 点击压缩选项,会弹出窗口,如图4—4所示。 在文本框里输入相应信息,或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图4-3。 具体代码如下: 图4-4文件压缩界面 (1)通过该方法传递路径信息,同时调用递归遍历的方法 //文件压缩 publicstaticvoidcompactFile(Stringsource,Stringtarget){ try{ out=newZipOutputStream(newBufferedOutputStream (newFileOutputStream(target)));//创建压缩文件输出流 recursionFile(source,source);//递归遍历文件 out。 close();//关闭输入流 }catch(Exceptione){ System.out。 println(”压缩出现错误! ”); } } (2)该方法实现递归遍历文件夹,同时判断文件是否为文件夹,如果是,就添加压缩项,如果不是就调用单个文件压缩的方法 //压缩文件夹 publicstaticvoidrecursionFile(Stringfilepath,Stringorigin)throwsException{ //该方法的作用是递归遍历文件 String[]temp=origin.split(”/");//将文件路径以“/”分割为若干字符串 Stringorigin1=temp[temp.length-1];//要保留的路径值 Filefile=newFile(filepath); File[]files=file.listFiles(); for(Filef: files){ if(! f。 isDirectory()){ //如果是文件,则执行压缩操作 ZipAFile(f,origin); }else{ //如果是目录,则首先将目录添加到压缩项中 out.putNextEntry(newZipEntry(f.getAbsolutePath().substring( f。 getAbsolutePath()。 indexOf(origin1))+”/”)); recursionFile(f。 getAbsolutePath(),origin); } } } (3)该方法用于实现单个文件压缩 //压缩文件 publicstaticvoidZipAFile(Filefile,Stringorigin)throwsIOException{ String[]temp=origin.split("/”);//将文件路径以“/”分割为若干字符串 Stringorigin1=temp[temp.length—1];//要保留的路径值 in=newFileInputStream(file);//创建文件源输入流 out。 putNextEntry(newZipEntry(file.getAbsolutePath().substring( file。 getAbsolutePath().indexOf(origin1))));//将当前文件添加到压缩项 byte[]b=newbyte[1024]; intlen; while((len=in.read(b))! =-1){ out。 write(b,0,len); } in.close();//关闭输入流 } 2.4解压界面 点击解压选项,会弹出窗口,如图4-5所示。 在文本框里输入相应信息,或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图2-3.具体代码如下: 图4-5文件解压界面 通过传递的路径信息完成解压操作 //解压文件 publicstaticvoidUnZip(Stringsource,Stringtarget){ try{ ZipFilezf=newZipFile(source);//创建一个指向zip文件的ZipFile对象 EnumerationentriesEnum=zf。 entries();//得到该压缩文件的所有压缩项 while(entriesEnum.hasMoreElements()){ ZipEntryentry=(ZipEntry)entriesEnum。 nextElement(); if(entry。 isDirectory()){//如果是文件夹 newFile(target+”/"+entry.getName()).mkdirs(); } else{//如果是文件 InputStreamin=zf。 getInputStream(entry);//得到指向该内容的流 BufferedOutputStreamout=newBufferedOutputStream( newFileOutputStream(target+”/"+entry.getName())); byte[]b=newbyte[8*1024]; intlen=0; while((len=in.read(b))! =—1){ out.write(b,0,len); } in.close(); out.close(); } } }catch(IOExceptione){ JOptionPane.showMessageDialog(null,"解压出现错误! "); } } 2。 5删除界面 点击删除选项,会弹出窗口,如图4—6所示。 选择相应的删除类型,在文本框里输入相应信息。 或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图4—3。 具体代码如下: 图4-6文件删除界面 (1)该方法主要调用了File的delete()方法删除单个文件 //删除文件 publicstaticvoiddelFile(Stringfilepath){ Filefile=newFile(filepath); if(file.exists()&&file。 isFile()) file。 delete(); } (2)该方法主要调用File的delete()删除文件夹,不同的是要删除文件夹,必须保证里面无文件和子目录,所以需要递归遍历镇整个文件夹,逐层删除各级文件夹 //删除文件夹目录 publicstaticvoiddelDir(Stringpath){ Filedir=newFile(path); if(dir。 exists()){ File[]temp=dir。 listFiles(); for(inti=0;i〈temp.length;i++){ if(temp[i]。 isDirectory()){//删除目录必须递归删除该目录下所有子目录和文件 delDir(path+"/"+temp[i]。 getName()); } else{ temp[i].delete(); } } dir。 delete(); } } 2。 5重命名界面 点击重命名选项,会弹出窗口,如图4-7所示。 在文本框里输入相应信息。 或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图4-3.具体代码如下: 图4-7文件重命名界面 该方法获取传递的路径信息及文件名信息,调用的是文件的renameTo方法实现文件的重命名 //指定文件夹下的文件重命名 publicstaticvoidrenameFile(Stringpath,Stringoldname,Stringnewname){ if(! oldname.equals(newname)){//新名字和旧名字不一样才进行重命名 FileoldFile=newFile(path+"/”+oldname); FilenewFile=newFile(path+”/”+newname); if(newFile.exists())//当前目录存在与新文件名重名的文件,则不允许重命名 JOptionPane。 showMessageDialog(null,newname+”文件已存在,请重新输入文件名! "); else{ oldFile。 renameTo(newFile); JOptionPane.showMessageDialog(null,"重命名文件成功! ”); } } } 2.5剪切界面 点击剪切选项,会弹出窗口,如图4—8所示。 在文本框里输入相应信息。 或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图4—3。 具体代码如下: 图4—8文件剪切界面 该方法类似于重命名,也是通过调用renameTo()方法实现重命名,不同是剪切是在两不同的路径下调用该方法的。 //文件从一个目录下转移到另一个文件夹下(剪切) publicstaticvoidchangeDirectory(Stringfilename,Stringoldpath,Stringnewpath){ if(! oldpath.equals(newpath)){ FileoldFile=newFile(oldpath+”/"+filename); FilenewFile=newFile(newpath+”/”+filename); if(newFile。 exists())//若在转移的目录下已存在要转移的文件 JOptionPane.showMessageDialog(null,filename+”文件在新目录下已存在,请重新输入! "); else{ oldFile.renameTo(newFile); JOptionPane。 showMessageDialog(null,”剪切文件成功! "); } } } } 五、调试与分析 (1)有参数限制的文件复制,获取用户输入的多个参数,如何将参数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 文件 管理 系统