Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
105 lines (64 sloc) 2.46 KB


A Download Manager using multiple connection and multiple buffers to optimize the process of downloading a file.

Latest Release



  • Multiple connections (multithreading)
  • Multiple buffering (for each connection)
  • Fail recovery (continue downloading after connection error)
  • Pause/Resume downloading
  • HTTP Redirects

Multiple connections

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.

Multiple buffering

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

Command line usage

Start download:

java -jar dm.jar url file

Start recovery download:

java -jar dm.jar -r recovery_file

Library usage

Core files are in com.maanoo.downloaderm.core

Start download:

DownloadThreadGroup dtg =, file);

Start download with listeners:

DownloadThreadGroup dtg =, file);

dtg.getStatus().addListener(new DownloadStatus.Listener() {

    public void onStateChange(DownloadStatus.State state) {


    public void onPauseChange(int id, boolean paused) {


    public void onSubDone(int id) {




Start recovery download:

DownloadThreadGroup dtg = DownloadEngine.recovery(file);


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.

You can’t perform that action at this time.