A Download Manager using multiple connection and multiple buffers to optimize the process of downloading a file.
- Multiple connections (multithreading)
- Multiple buffering (for each connection)
- Fail recovery (continue downloading after connection error)
- Pause/Resume downloading
- HTTP Redirects
Splits the file to be downloaded in multiple parts and opens one connection for each of them. All connections write parallel to the same file.
If number of buffers is set to greater than 1 then each connection uses a multiple buffering logic. While one thread downloads data to one buffer, another thread writes data to the disk from an other buffer.
When the downloading is stopped or interrupted a recovery file (.dmrecovery
) is created. It can be used to resume the download even after the termination of the program. On the successful download the recovery file is deleted.
- Pause/Resume/Cancel downloading
- Progress bars for each connection
- Settings menu
Start download:
java -jar dm.jar url file
Start recovery download:
java -jar dm.jar -r recovery_file
Core files are in com.maanoo.downloaderm.core
Start download:
DownloadThreadGroup dtg = DownloadEngine.download(url, file);
dtg.start();
Start download with listeners:
DownloadThreadGroup dtg = DownloadEngine.download(url, file);
dtg.getStatus().addListener(new DownloadStatus.Listener() {
@Override
public void onStateChange(DownloadStatus.State state) {
}
@Override
public void onPauseChange(int id, boolean paused) {
}
@Override
public void onSubDone(int id) {
}
});
dtg.start();
Start recovery download:
DownloadThreadGroup dtg = DownloadEngine.recovery(file);
dtg.start();
All files in this repository are Copyright (c) 2014-2017 DownloaderM author list.
Code in this repository is licensed under the GNU General Public License v3.0.
Data in this repository is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
DownloaderM author list can be determined via git shortlog -sne
.