我有一个Spring rest服务,每隔10分钟就会定期运行。服务知道存储在远程服务器上的文件的路径。文件大小约为2GB。 Service获取文件,然后读取文件的内容,然后根据文件内容操作数据库。弹簧休息服务获取大文件并对其内容进行操作的最佳方法是什么。
答案 0 :(得分:2)
使用Apache File utils,
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#copyURLToFile(java.net.URL,java.io.File,int,int)
从在线下载1 GB文件的示例代码如下,
package com.jai.download;
import java.io.File;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class FileDownload {
public static void main(String[] args) {
File file = new File("c:/jj/1gb.zip");
URL url;
try {
url = new URL("http://download.thinkbroadband.com/1GB.zip");
long start = System.currentTimeMillis();
System.out.println("Downloading....");
FileUtils.copyURLToFile(url, file);
long end = System.currentTimeMillis();
System.out.println("Completed....in ms : " + (end - start));
} catch (Exception e) {
e.printStackTrace();
}
}
}
我的网速为100 Mbps,它在94秒内下载了这个1GB文件。一旦你下载了这样的csv文件,你就可以阅读它的内容来进行业务逻辑检查并采取适当的措施。