报告创建时间:2015.10.30《Java程序设计》实验报告年级、专业、班级2013级信安1班2013级信安2班2013级信安2班姓名李红岩张镇张子涵实验题目命令行文件管理器实验时间2015.10.11-2015.11.1实验地点主教0410实验成绩实验性质□验证性□设计性■综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范;其他:评价教师签名:一、实验目的运用面向对象程序设计思想,基于Java文件管理和I/O框架,实现命令行下的文件管理器。二、实验项目内容1、实现文件夹创建、删除、进入。2、实现当前文件夹下的内容罗列。3、实现文件拷贝和文件夹拷贝(文件夹拷贝指深度拷贝,包括所有子目录和文件)。4、实现指定文件的加密和解密。5、实现指定文件和文件夹的压缩。6、实现压缩文件的解压。三、实验过程或算法(源程序)实现思路:程序中包含创建文件夹,删除文件夹,进入文件夹,文件夹内容罗列,文件拷贝,文件夹拷贝,文件加密,文件解密,文件及文件夹压缩,文件及文件夹解压等内容。程序使用了try-catch的异常处理机制,主程序使用switch语句执行各项功能,主要是使用输入输出流的方式来实现。程序流程图:功能图:创建文件夹create删除文件夹delete进入文件夹cd文件夹内容罗列ls文件拷贝cp命令行文件夹拷贝cp文件加密encrypt文件解密decrypt文件压缩compress文件解压decompress文件夹压缩compress文件夹解压decompress帮助文档help源程序:主菜单:packageabc;importjava.io.File;importjava.io.IOException;importjava.util.Scanner;importabc.CreateFile;importabc.DeleteFile;publicclassMainMenu{publicstaticvoidmain(String[]args)throwsIOException{Scanners=newScanner(System.in);StringcurPath=newString();while(true){Stringop=s.next();switch(op){casecreate:StringpathCreate=s.next();StringnameCreate=s.next();CreateFilecreate=newCreateFile(pathCreate,nameCreate);create.createFile(pathCreate,nameCreate);break;caserm:Filedir=newFile(s.next());if(dir.exists()&&dir.isDirectory()){DeleteFiledelete=newDeleteFile(dir);delete.delete(dir);System.out.println(删除成功!);}elseSystem.out.println(找不到文件路径+dir);break;casecd:curPath=s.next();Filetest=newFile(curPath);if(!test.exists())开始进入命令行根据输入实现相关功能退出System.out.println(路径有错误!);break;casels:FiledirList=newFile(curPath);if(dirList.isDirectory()&&dirList.exists()){ListFilelist=newListFile(dirList);list.listFile(dirList);}elseSystem.out.println(默认路径为空!);break;casecp:Stringsrc=s.next();Stringdes=s.next();CopyFilecopy=newCopyFile(src,des);copy.copyFile(src,des);break;caseencrypt:StringpathEn=s.next();EncryptFileencrypt=newEncryptFile(pathEn);encrypt.encryptFile(pathEn);break;casedecrypt:StringpathDe=s.next();DecryptFiledecrypt=newDecryptFile(pathDe);decrypt.decryptFile(pathDe);break;casecompress:StringpathZip=s.next();CompressFilecompress=newCompressFile(pathZip);compress.compressFile(pathZip);break;casedecompress:StringpathUnzip=s.next();Stringdescdir=s.next();DecompressFiledecompress=newDecompressFile(pathUnzip,descdir);decompress.decompressFile(pathUnzip,descdir);break;casehelp:System.out.println(帮助文档:);System.out.println(创建文件夹格式create文件夹路径文件夹名称);System.out.println(删除文件夹格式rm文件夹路径);System.out.println(进入文件夹格式cd文件夹路径);System.out.println(当前文件夹下的内容罗列格式ls);System.out.println(复制文件或文件夹格式cp原路径目地路径);System.out.println(文件加密格式encrypt文件路径);System.out.println(文件解密格式decrypt文件路径);System.out.println(文件或文件夹的压缩格式compress文件或文件夹路径);System.out.println(解压格式decompress压缩包路径解压目地路径);break;caseexit:System.exit(0);break;default:break;}}}}文件的创建:packageabc;importjava.io.File;publicclassCreateFile{Stringpath;Stringname;publicCreateFile(Stringpath,Stringname){path=this.path;name=this.name;}publicbooleancreateFile(Stringpath,Stringname){Filef=newFile(path+File.separator+name);if(f.mkdir())System.out.println(创建成功!);returnf.mkdir();}}文件的删除:packageabc;importjava.io.File;publicclassDeleteFile{Filepath;publicDeleteFile(Filepath){path=this.path;}publicvoiddelete(Filepath){Filefs[]=path.listFiles();intlistleng=fs.length;for(inti=0;ilistleng;i++){if(fs[i].isFile())fs[i].delete();elsedelete(fs[i]);}path.delete();}}文件的罗列:ListFile.java:packageabc;importjava.io.File;publicclassListFile{Filepath;publicListFile(Filepath){path=this.path;}publicvoidlistFile(Filepath){Filefs[]=path.listFiles();for(inti=0;ifs.length;i++){if(fs[i].isFile())System.out.println(文件:+fs[i]);else{System.out.println(目录:+fs[i]);listFile(fs[i]);}}}}文件和文件夹的复制:CopyFile.java:packageabc;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;publicclassCopyFile{Stringsrc,des;publicCopyFile(Stringsrc,Stringdes){src=this.src;des=this.des;}publicvoidcopyFile(Stringsrc,Stringdes){try{Filesrcf=newFile(src);Filedesf=newFile(des);if(!srcf.exists())System.out.println(源文件不存在!);byteb[]=newbyte[1024*1024*5];if(srcf.isFile()){FileInputStreamfin=newFileInputStream(srcf);FileOutputStreamfout=newFileOutputStream(desf);try{intlen=fin.read(b);while(len!=-1){fout.write(b,0,len);len=fin.read(b);}fin.close();fout.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}else{Filefs[]=srcf.listFiles();if(!desf.exists())desf.mkdir();for(inti=0;ifs.length;i++){//System.out.println(des+File.separator+fs[i].getName());copyFile(fs[i].getAbsolutePath(),des+File.separator+fs[i].getName());}}}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}文件加密:EncryFile.java:packageabc;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;publicclassEncryptFile{Stringpath;publicEncryptFile(Stringpath){path=this.path;}publicvoidencryptFile(Stringpath){try{Fileinf=newFile(path);Fileoutf=newFile(path+.txt);if(!inf.isFile()||!inf.exists())System.out.print