1.项目需求:
将网络映射地址(iwork.mykingdee.com)下的多级目录迁移到企业云盘。
2.项目的设计方案:
1》采用递归的方式逐层遍历文件夹,增加一个日志文件夹handling.log,以便重新启动时,不需要重复创建文件夹,每次递归回一级文件夹及以上时,清空该日志文件。
2》在当前上传的二级文件夹及以上时,finish.log记录当前成功上传的文件和文件夹,每次递归回二级文件夹及以上时,清空。
3》判断当前时间是否超过预设的结束时间,如超过,不再遍历,逐层返回。
3.编程语言选择:
由于iwork项目之前是采用Java编写的上传功能,故后续设计也采用Java,但上传所需要的底层接口是调用的php接口。
4.项目核心代码:
分为三部分:(1).利用Java线程池定时任务完成周期性上传的需求;
(2).多级目录的遍历采用递归的方式;
(3).使用HTTP协议进行文件传输。
5.测试
1>本地测试:文件大小:267MB,6565个文件,827个文件夹
上传总耗时:71分钟
平均上传速度:63KB/s
结果分析:上传速度慢的原因可能有以下几点:
(1) 后台接口限制速率,
(2) 也可能是本地网络问题
(3) 文件目录的复杂导致HTTP请求次数过多,程序在运行过程中耗时较长。