资源简介
JAVAWEB批量文件下载器,实现文件批量下载,队列方式,一个下载完成,再下载另一个。
代码片段和文件信息
package servlet;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DeliverServlet extends HttpServlet {
private static final long serialVersionUID = -247051569889918673L;
private static final String base_URL = “http://www.3310.com/plus/apksoftajax.php“;
public static Map downloaders = new HashMap();
@Override
public void init(ServletConfig config) throws ServletException {
super.init();
}
@Override
protected void doPost(HttpServletRequest request HttpServletResponse response) throws ServletException IOException {
doGet(request response);
}
@Override
protected void doGet(HttpServletRequest request HttpServletResponse response) throws ServletException IOException {
response.setCharacterEncoding(“UTF-8“);
response.setContentType(“text/xml“);
final String md5 = request.getParameter(“md5“);
final String filePath = request.getParameter(“filePath“);
final String fileName = filePath.substring(filePath.lastIndexOf(“/“) + 1 filePath.length());
final String localPath = request.getParameter(“localPath“);
if (!StringUtil.isNullOrBlank(md5) && !StringUtil.isNullOrBlank(filePath) && !StringUtil.isNullOrBlank(localPath)) {
ThreadUtils.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (downloaders.get(md5) == null) {
downloaders.put(md5 fileName);
downloadFile(md5 filePath fileName localPath);
}
}
});
} else {
HttpRequest.sendGet(base_URL “md5=“ + md5 + “&isSuc=0&file=“ + fileName);
}
}
private void deleteFile(File filename) {
if (filename.exists()) { // 判断文件是否存在
if (filename.isFile()) { // 判断是否是文件
filename.delete();
}
}
}
public void downloadFile(String md5 String filePath String fileName String localPath) {
int nStartPos = 0;
int nRead = 0;
try {
URL url = new URL(filePath);
// 打开连接
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
// 获得文件长度
long nEndPos = getFileSize(filePath);
RandomAccessFile oSavedFile = new RandomAccessFile(localPath + “\\“ + fileName “rw“);
httpConnection.setRequestProperty(“User-Agent“ “Internet Explorer“);
String sProperty = “bytes=“ + nStartPos + “-“;
// 告诉服务器这个文件从nStartPos字节开始传
httpConnection.setRequestProperty(“RANGE“ sProperty);
InputStream input = httpConnection.getInputStream();
byte[] b = new byte[1024];
// 读取网络文件写入指定的文件中
while ((nRead = input.read(b 0 1024)) > 0 && nStartPos < nEndPos) {
oSav
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 529 2015-03-16 15:00 test\.classpath
文件 285 2015-03-16 15:00 test\.myme
文件 1747 2015-03-16 15:40 test\.project
文件 500 2015-03-16 15:00 test\.settings\.jsdtscope
文件 78 2015-03-16 15:00 test\.settings\com.genuitec.eclipse.ws.prefs
文件 57 2015-03-16 15:02 test\.settings\org.eclipse.core.resources.prefs
文件 364 2015-03-16 15:00 test\.settings\org.eclipse.jdt.core.prefs
文件 450 2015-03-16 15:00 test\.settings\org.eclipse.wst.common.component
文件 252 2015-03-16 15:00 test\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2015-03-16 15:00 test\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2015-03-16 15:00 test\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 4764 2015-03-16 16:50 test\src\servlet\DeliverServlet.java
文件 3642 2015-03-16 16:14 test\src\servlet\HttpRequest.java
文件 1757 2015-03-16 15:58 test\src\servlet\MD5Helper.java
文件 10842 2015-03-16 15:15 test\src\servlet\StringUtil.java
文件 2137 2015-03-16 15:58 test\src\servlet\TestDownFile.java
文件 1143 2015-03-16 15:13 test\src\servlet\ThreadUtils.java
文件 834 2015-03-16 15:00 test\WebRoot\index.jsp
文件 36 2015-03-16 15:00 test\WebRoot\me
文件 1285 2015-03-16 16:50 test\WebRoot\WEB-INF\classes\servlet\DeliverServlet$1.class
文件 5795 2015-03-16 16:50 test\WebRoot\WEB-INF\classes\servlet\DeliverServlet.class
文件 4108 2015-03-16 16:14 test\WebRoot\WEB-INF\classes\servlet\HttpRequest.class
文件 2631 2015-03-16 15:58 test\WebRoot\WEB-INF\classes\servlet\MD5Helper.class
文件 9993 2015-03-16 15:15 test\WebRoot\WEB-INF\classes\servlet\StringUtil.class
文件 3001 2015-03-16 15:58 test\WebRoot\WEB-INF\classes\servlet\TestDownFile.class
文件 1618 2015-03-16 15:13 test\WebRoot\WEB-INF\classes\servlet\ThreadUtils.class
文件 643 2015-03-16 15:03 test\WebRoot\WEB-INF\web.xm
目录 0 2015-03-16 16:51 test\WebRoot\WEB-INF\classes\servlet
目录 0 2015-03-16 16:51 test\WebRoot\WEB-INF\classes
目录 0 2015-03-16 15:00 test\WebRoot\WEB-INF\lib
............此处省略10个文件信息
评论
共有 条评论