Skip to content
A Download Manager (Multiple connections, Multiple buffering, Fail recovery) (Java)
Java CSS Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
src/main
LICENSE
Makefile
README.md
TODO.md
pom.xml

README.md

DownloaderM

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

Latest Release

Screenshot

Features

  • 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.

Recovery

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.

Interface

  • 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 = 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();

License

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.