java大数据处理-千万级FTP下载
1、说明本文使用的是commons-net-ftp-2.0.jar 的 ftp工具
2、FTP大数据量处理的关键所在 -列目录到文件,即发送标准的FTP命令NLST,把远程ftp执行目录下的所有文件名通过流的形式下载到本地文件,然后根据文件名去下载文件.
可以通过apache 发送ftp命令 "NLST" 的方式列目录到文件中去
面看一下简单的实现
|
十万级别以上的数据量的话千万不要使用下面这种方式,如果真的全部创建成FTPFile对象...你的内存会爆掉..
|
3、从2中生成的文件中读取要下载的文件名,当然你可以分批次从文件中读取 要下载的文件名到内存的list当中.,或者读取一个文件名就下载一个文件,不要把所有的数据都加载到内存,如果很多的话会出问题
大数据库操作的过程中,如果有100W条记录,列出来的目录文件的大小 100M以上,如果数据量操作千万,生成的文件肯定会大于1G,这个时候要是全部加载到内存...肯定会溢出了..
4、关于文件的断点续传,apache的ftp包中支持的非常的好,这个也是文件下载的核心代码----关于文件的断点续传, 获得ftp文件的大小和本地文件的大小进行判断,然后使用ftp提供的断点续传功能
下载文件一定要使用二进制的形式
|
|
5、关于磁盘空间已满的问题,这个也是下载文件的时候经常碰见的情况,大家可以使用如下的方式进行处理
java虚拟机对于磁盘空间已满,在英文环境下的 linux aix 机器上 一般报
There is not enough space in the file system
中文环境下 一般报 "磁盘空间已满"
大家可以使用下面的代码进行验证
|
- 上一篇 »php 大数据量及海量数据处理算法总结
- 下一篇 »Java-数据字符串进行四舍五入