80 likes | 153 Views
Lab17. 程序设计 B 班 2008-01-03. DiskBackup 磁盘备份. 设计一个 applet/application, 实现任意磁盘的所有文件向另一个磁盘的拷贝 ( 备份 ) 如何获取磁盘的所有逻辑盘符 ? 逻辑盘也是目录 , 使用 File 对象的 isDirectory() 方法 , 例如测试盘 E 是否存在可用 (new File(“E:”)).isDirectory()==true? 文件拷贝 用 FileInputStream, FileOutputStream 从指定文件获取 I/O 流
E N D
Lab17 程序设计B班 2008-01-03
DiskBackup 磁盘备份 • 设计一个applet/application, 实现任意磁盘的所有文件向另一个磁盘的拷贝(备份) • 如何获取磁盘的所有逻辑盘符? • 逻辑盘也是目录,使用File对象的isDirectory()方法,例如测试盘E是否存在可用(new File(“E:”)).isDirectory()==true? • 文件拷贝 • 用FileInputStream, FileOutputStream从指定文件获取I/O流 • 套用BufferedInputStream, BufferedOutputStream提高效率 • 文件I/O结束后,记得调用close()关闭流
DiskBackup 磁盘备份 • 其他问题 • 获取当前目录currentDirectory下所有文件: • (new File(currentDirectory)).listFiles(); • 使用递归方法解决嵌套目录的备份问题: • 备份方法DiskBackup(currentDirectory) • 对当前目录下的文件(非目录)进行备份 • 对当前目录下的子目录subDirectory调用DiskBackup(subDirectory)
界面要求 • 2个下拉列表ComboBox • 为实现任意盘间的拷贝, 在applet初始化时获取硬盘当前的所有逻辑盘符添加到2个列表中.
界面要求 • Button • Start Backup: 开始备份 • Create Log File: 输出日志文件
生成备份日志 • 日志文件 • 将完成的所有备份情况保存在一个文件log.txt中
选做部分 • TextArea(有剩余时间选做) • 将完成的备份情况显示在文本域中(日志文件的前台显示),例如:“X:/***/***/ 已备份” • 如何同步显示备份情况?将备份方法的调用包含在线程里(不要求)
进阶(课后思考) • 二次备份时如何实现原备份基础上的动态备份? • 判断为新的文件或修改过的文件:备份 • 判断文件自上次备份后未修改过:跳过 • 判断上次备份文件包含有过期(不存在)文件:删除