Skip to content

Commit

Permalink
设置是否支持断点选项,文件头编码
Browse files Browse the repository at this point in the history
  • Loading branch information
caijia committed Sep 3, 2019
1 parent a1a1fde commit 9c4d581
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
11 changes: 7 additions & 4 deletions download/src/main/java/com/caijia/download/DownloadCallable.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,9 @@ public static String stateToString(int state) {
@Override
public CallableResult call() {
Utils.log(debug, threadIndex, "running");
long previousDownloadLength = breakPointManager.getDownloadLength(threadIndex,threadCount,
saveFileDir.getAbsolutePath(), fileRequest);
long previousDownloadLength = breakPointManager != null ?
breakPointManager.getDownloadLength(threadIndex,threadCount,
saveFileDir.getAbsolutePath(), fileRequest) : 0;
Utils.log(debug, threadIndex, "previous download length = " + previousDownloadLength);

currentPosition = startPosition + previousDownloadLength;
Expand Down Expand Up @@ -141,8 +142,10 @@ private int writeData(InputStream inStream) {
while (!exit && (len = inStream.read(buffer)) != -1) {
partFile.write(buffer, 0, len);
downloadSize += len;
breakPointManager.saveDownloadLength(threadIndex, threadCount, downloadSize,
saveFileDir.getAbsolutePath(), fileRequest);
if (breakPointManager != null) {
breakPointManager.saveDownloadLength(threadIndex, threadCount, downloadSize,
saveFileDir.getAbsolutePath(), fileRequest);
}

if (downloadProgressListener != null) {
downloadProgressListener.downloadProgress(threadIndex, len, fileSize);
Expand Down
11 changes: 10 additions & 1 deletion download/src/main/java/com/caijia/download/FileDownloader.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class FileDownloader {
private FileRequest fileRequest;
private String saveFileDirPath;
private Schedule schedule;
private boolean supportBreakPoint;
private List<DownloadCallable> downloadCallableList;
private List<FutureTask> downloadTasks;
private BreakPointManager breakPointManager;
Expand All @@ -47,14 +48,15 @@ private FileDownloader(Builder builder) {
this.threadCount = builder.threadCount;
this.saveFileDirPath = builder.saveFileDirPath;
this.breakPointManager = builder.breakPointManager;
this.supportBreakPoint = builder.supportBreakPoint;
this.fileRequest = builder.fileRequest;
this.schedule = builder.schedule;
this.intervalDownload = builder.intervalDownload;
if (this.connection == null) {
this.connection = new OkHttpConnection();
}

if (this.breakPointManager == null) {
if (supportBreakPoint && this.breakPointManager == null) {
this.breakPointManager = new FileBreakPointManager();
}

Expand Down Expand Up @@ -380,11 +382,18 @@ public static class Builder {

private int maxThreadCount;

private boolean supportBreakPoint;

public Builder connection(Connection connection) {
this.connection = connection;
return this;
}

public Builder supportBreakPoint(boolean supportBreakPoint) {
this.supportBreakPoint = supportBreakPoint;
return this;
}

public Builder maxThreadCount(int maxThreadCount) {
this.maxThreadCount = maxThreadCount;
return this;
Expand Down
10 changes: 9 additions & 1 deletion download/src/main/java/com/caijia/download/FileResponse.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.caijia.download;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
Expand Down Expand Up @@ -58,7 +60,13 @@ public String getFileName() {
String disposition = Utils.getHeader("Content-Disposition", headers);
if (!Utils.isEmpty(disposition)) {
Matcher m = Pattern.compile(".*filename=(.*)").matcher(disposition.toLowerCase());
if (m.find()) return m.group(1);
if (m.find()) {
try {
return URLDecoder.decode(m.group(1), "utf-8");
} catch (Exception e) {
return m.group(1);
}
}

} else {
int pathIndex = realDownloadUrl.lastIndexOf("\\");
Expand Down

0 comments on commit 9c4d581

Please sign in to comment.