lab17

8
Lab17 Lab17 程程程程 程程程程 B B 2008-01-03 2008-01-03

Upload: september-aguilar

Post on 01-Jan-2016

26 views

Category:

Documents


0 download

DESCRIPTION

Lab17. 程序设计 B 班 2008-01-03. DiskBackup 磁盘备份. 设计一个 applet/application, 实现任意磁盘的所有文件向另一个磁盘的拷贝 ( 备份 ) 如何获取磁盘的所有逻辑盘符 ? 逻辑盘也是目录 , 使用 File 对象的 isDirectory() 方法 , 例如测试盘 E 是否存在可用 (new File(“E:”)).isDirectory()==true? 文件拷贝 用 FileInputStream, FileOutputStream 从指定文件获取 I/O 流 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lab17

Lab17Lab17

程序设计程序设计 BB 班班 2008-01-032008-01-03

Page 2: Lab17

DiskBackup DiskBackup 磁盘备份磁盘备份 设计一个设计一个 applet/application, applet/application, 实现任意磁盘的所有文件向实现任意磁盘的所有文件向

另一个磁盘的拷贝另一个磁盘的拷贝 (( 备份备份 ))

如何获取磁盘的所有逻辑盘符如何获取磁盘的所有逻辑盘符 ?? 逻辑盘也是目录逻辑盘也是目录 ,, 使用使用 FileFile 对象的对象的 isDirectory()isDirectory() 方法方法 ,, 例例

如测试盘如测试盘 EE 是否存在可用是否存在可用 (new File(“E:”)).isDirectory()==t(new File(“E:”)).isDirectory()==true?rue?

文件拷贝文件拷贝 用用 FileInputStream, FileOutputStreamFileInputStream, FileOutputStream 从指定文件获取从指定文件获取 I/I/

OO 流流 套用套用 BufferedInputStream, BufferedOutputStreamBufferedInputStream, BufferedOutputStream 提高效提高效

率率 文件文件 I/OI/O 结束后结束后 ,, 记得调用记得调用 close()close() 关闭流关闭流

Page 3: Lab17

DiskBackup DiskBackup 磁盘备份磁盘备份 其他问题其他问题

获取当前目录获取当前目录 currentDirectorycurrentDirectory 下所有文件下所有文件 :: (new File(currentDirectory)).listFiles();(new File(currentDirectory)).listFiles();

使用递归方法解决嵌套目录的备份问题:使用递归方法解决嵌套目录的备份问题: 备份方法备份方法 DiskBackup(currentDirectory)DiskBackup(currentDirectory)

对当前目录下的文件对当前目录下的文件 (( 非目录非目录 )) 进行备份进行备份 对当前目录下的子目录对当前目录下的子目录 subDirectorysubDirectory 调用调用 DiskBDiskB

ackup(subDirectory)ackup(subDirectory)

Page 4: Lab17

界面要求界面要求 22 个下拉列表个下拉列表 ComboBoxComboBox 为实现任意盘间的拷贝为实现任意盘间的拷贝 , , 在在 appletapplet 初始化时获取硬初始化时获取硬

盘当前的所有逻辑盘符添加到盘当前的所有逻辑盘符添加到 22 个列表中个列表中 ..

Page 5: Lab17

界面要求界面要求 ButtonButton

Start Backup: Start Backup: 开始备份开始备份 Create Log File: Create Log File: 输出日志文件 输出日志文件

Page 6: Lab17

生成备份日志生成备份日志 日志文件日志文件

将完成的所有备份情况保存在一个文件将完成的所有备份情况保存在一个文件 log.txtlog.txt 中中

Page 7: Lab17

选做部分选做部分

TextArea(TextArea( 有剩余时间选做有剩余时间选做 )) 将完成的备份情况显示在文本域中(日志文件的前台将完成的备份情况显示在文本域中(日志文件的前台

显示),例如:“显示),例如:“ X:/***/***/ X:/***/***/ 已备份”已备份” 如何同步显示备份情况?将备份方法的调用包含在线如何同步显示备份情况?将备份方法的调用包含在线

程里(不要求)程里(不要求)

Page 8: Lab17

进阶(课后思考)进阶(课后思考) 二次备份时如何实现原备份基础上的动态备份?二次备份时如何实现原备份基础上的动态备份?

判断为新的文件或修改过的文件:备份判断为新的文件或修改过的文件:备份 判断文件自上次备份后未修改过:跳过判断文件自上次备份后未修改过:跳过 判断上次备份文件包含有过期(不存在)文件:删除判断上次备份文件包含有过期(不存在)文件:删除