1、报告创建时间:Java 程序设计实验报告年级、专业、班级2011 级计科 3 班2011 级计科 3 班 姓名江唯伟张桉实验题目 命令行文件管理器实验时间 2013.10.14 实验地点 主教 0414实验成绩 实验性质 验证性 设计性 综合性教师评价:算法/实验过程正确; 源程序/实验内容提交 程序结构/实验步骤合理;实验结果正确; 语法、语义正确; 报告规范; 其他:评价教师签名:一、实验目的运用面向对象程序设计思想,基于 Java 文件管理和 I/O 框架,实现命令行下的文件管理器。二、实验项目内容1、实现文件夹创建、删除、进入。2、实现当前文件夹下的内容罗列,能够根据文件名、日期、大小
2、,类型进行排序。3、实现文件拷贝和文件夹拷贝(文件夹拷贝指深度拷贝,包括所有子目录和文件) 。4、实现指定文件的加密和解密。5、实现多个文件的压缩和解压缩。6、实现一个大文件的分割和合并。7、实现把项目导出为可执行的*.jar 文件。三、实验过程或算法(源程序)要求:写明设计思想、程序的结构、功能关系图、类的说明并按照UML 的规范画出类之间的关系图、程序执行流程图,最后是源代码。设计思想:主界面给出所有的选项,通过 switch-case 事件,来选择不同功能。运用到try-catch 处理异常。文件的操作用到了:FileInputStream和FileOutputStream,Buffer
3、edInputStream和BufferedOutputStream,Scanner等流。程序的结构:src 里共含有四个 java 文件,分别为压缩、解压缩、分割与合并、main 和其余功能选项。功能关系图:创建目录删除目录复制文件复制目录加密解密文件主界面 列出目录重命名文件的压缩与解压文件的分割与合成退出程序执行流程图:开始进入主界面按下键盘上相应数字按钮 按下数字 19 按下数字 0 根据提示输入数据 退出实现功能是 否是否继续?源代码:创建目录:class CreateFile CreateFile() try System.out.println(“where to create?
4、“ + “ please input the path:“);Scanner s = new Scanner(System.in);String path = s.next();File file = new File(path);if (file.exists() System.out.println(“please input the filename! “+ “例如 F:/src/sb。txt“);String name = s.next();File f = new File(path + File.separator + name);f.mkdir();System.out.prin
5、tln(“success to create!“); elseSystem.out.println(“the directory isnt exist!“); catch (Exception e) e.printStackTrace();删除目录:class DeleteFile File path;public DeleteFile(File path) this.path = path;public void Delete(File path) File files = path.listFiles();for (int i = 0; i 0) out.write(buffer, 0,
6、r);cis.close();is.close();out.close();public void decrypt(String file, String dest) throws Exception Cipher cipher = Cipher.getInstance(“DES“);cipher.init(Cipher.DECRYPT_MODE, this.key);InputStream is = new FileInputStream(file);OutputStream out = new FileOutputStream(dest);CipherOutputStream cou =
7、new CipherOutputStream(out, cipher);byte buffer = new byte1024;int r;while (r = is.read(buffer) = 0) cou.write(buffer, 0, r);cou.close();out.close();is.close();压缩与解压缩:public class TestZIP public static void zipFiles(File srcfile, File zipfile) try / ZipOutputStream类:完成文件或文件夹的压缩ZipOutputStream out =
8、new ZipOutputStream(new FileOutputStream(zipfile);for (int i = 0; i 0) out.write(buf, 0, len);out.closeEntry();in.close();out.close();System.out.println(“压缩完成.“ ); catch (Exception e) e.printStackTrace();public static void unZipFiles(File zipfile, String descDir) try ZipFile zf = new ZipFile(zipfile
9、);for (Enumeration entries = zf.entries(); entries.hasMoreElements();) ZipEntry entry = (ZipEntry) entries.nextElement();String zipEntryName = entry.getName();InputStream in = zf.getInputStream(entry);OutputStream out = new FileOutputStream(descDir + zipEntryName);byte buf1 = new byte1024;int len;wh
10、ile (len = in.read(buf1) 0) out.write(buf1, 0, len);in.close();out.close();System.out.println(entry); catch (Exception e) e.printStackTrace();分割与合并:public class FileDivisionUniter public static final String SUFFIX = “.txt“;public static String divide(String fileName, long size) throws Exception File
11、 inFile = new File(fileName);if (!inFile.exists() | inFile.isDirectory() throw new Exception(“指定文件不存在!“ );File parentFile = inFile.getParentFile();/ 获得被分割文件父文件,将来被分割成的小文件就存放在这个目录下long fileLength = inFile.length();/ 取得文件的大小if (size fileLength) ? fileLength : inEndIndex;/ 从输入流中 读取字节存储到输出流中for (; inBeg
12、inIndex inEndIndex; inBeginIndex+)out.write(reader.read();out.close();outFileNamesoutFileIndex = outFile.getAbsolutePath();fis.close();return outFileNames;public static String unite(String fileNames, String targerFileName)throws Exception File inFile = null;File outFile = new File(targerFileName);Fi
13、leOutputStream out = new FileOutputStream(outFile);for (int i = 0; i fileNames.length; i+) inFile = new File(fileNamesi);FileInputStream in = new FileInputStream(inFile);int c;while (c = in.read() != -1)out.write(c);in.close();out.close();return outFile.getAbsolutePath();四、实验结果及分析和(或)源程序调试过程(包含程序运行截
14、图)主界面:1.创建目录:2.删除目录:3.复制文件:4.复制目录:5.加密解密文件:6.进入目录:7.列出目录:8.重命名:9.对文件夹进行压缩与解压缩:10.对文件进行分割与合成:0.退出程序:程序运行成功。备注:1、教师在布置需撰写实验报告的实验前,应先将报告书上的“实验题目” 、 “实验性质” 、 “实验目的” 、 “实验项目内容”等项目填写完成,然后再下发给学生。2、教师在布置需撰写报告的实验项目时,应告知学生提交实验报告的最后期限。3、学生应按照要求正确地撰写实验报告:1) 在实验报告上正确地填写“实验时间” 、 “实验地点”等栏目。2) 将实验所涉及的源程序文件内容(实验操作步骤
15、或者算法)填写在“实验过程或算法(源程序) ”栏目中。3) 将实验所涉及源程序调试过程(输入数据和输出结果)或者实验的分析内容填写在“实验结果及分析和(或)源程序调试过程”栏目中。4) 在实验报告页脚的“报告创建时间:”处插入完成实验报告时的日期和时间。5) 学生将每个实验完成后,按实验要求的文件名通过网络提交(上载)到指定的服务器所规定的共享文件夹中。每个实验一个电子文档,如果实验中有多个电子文档(如源程序或图形等) ,则用 WinRAR 压缩成一个压缩包文档提交,压缩包文件名同实验报告文件名(见下条) 。6) 提交的实验报告电子文档命名为:实验序号(1 位数字)_年级(四位数字不要“级”字
16、)专业(缩写:计算机科学与技术专业(计科) 、网络工程专业(网络) 、信息安全专业(信息) 、物联网工程(物联网) )项目组成员(学号(八位数字)姓名) doc。如完成第 1 个 Project,专业为“计算机科学与技术” , “网络工程专业”专业,项目组成员有:张三(学号20115676) ,李四(学号 20115676) ,王五(学号 20115676) ,完成的课程实验报告命名为:实验 1_2011_计科 20115676 张三_网络 20115676 李四_20115676 王五.doc,以后几次实验的报告名称以此类推。4、教师(或助教)在评价学生实验时,应根据其提交的其他实验相关资料
17、(例如源程序文件等)对实验报告进行仔细评价。评价后应完成的项目有:1) 在“成绩”栏中填写实验成绩。每个项目的实验成绩按照五级制(优、良、中、及格、不及格)方式评分,实验总成绩则通过计算每个项目得分的平均值获得(平均值计算时需将五级制转换为百分制优=95、良=85、中=75、及格=65、不及格=55) 。2) 在“教师评价”栏中用符号标注评价项目结果(用表示正确,用表示错误,用表示 半对半错) 。3) 在“教师评价”栏中“评价教师签名”填写评价教师(或助教)姓名。将评价后的实验报告转换为 PDF 格式文件归档。4) 课程实验环节结束后,任课教师将自己教学班的实验报告文件夹进行清理。在提交文件夹中,文件总数为实验次数教学班学生人数(如,教学班人数为 90 人,实验项目为 5,其文件数为:905=450) 。任课教师一定要认真清理,总数相符,否则学生该实验项目不能得分。最后将学生提交的实验报告刻光盘连同实验成绩一起放入试卷袋存档。