Bestanden downloaden met Java

Ik heb een stukje code geschreven voor het downloaden van een aflevering van een webcast die ik doe. Het krijgt de URL van de aflevering en krijgt de plaats om het op te slaan. Het downloadt echter slechts tot 16 MB en annuleert vervolgens automatisch. Ik ben niet helemaal zeker welke waarde moet veranderen om dit te vergroten. Is het mogelijk, en kan iemand me alsjeblieft in de goede richting wijzen? Dank je!

De downloadcode:

    URL url = new URL(episode.getUrl());
    ReadableByteChannel rbc = Channels.newChannel(url.openStream());
    FileOutputStream fos = new FileOutputStream(episode.getLocalSave());
    fos.getChannel().transferFrom(rbc, 0, 1 << 24);
17
Zie voor meer informatie terug verwijzing naar wat waarschijnlijk het originele codefragment is stackoverflow.com/a/921400/939250
toegevoegd de auteur Donal Lafferty, de bron

2 antwoord

Een snelle blik op de documentatie van transfer van:

public abstract long transferFrom(ReadableByteChannel channel, long position, long count)

GOED.

The value 1<<24 for the count (from the original question) equals 16M

Ik denk dat dat het antwoord is op je vraag :-)

41
toegevoegd
geen probleem ;-) Blij dat ik heb geholpen
toegevoegd de auteur emesx, de bron
gebruik gewoon elke gewenste grootte, zoals 1 << 31 betekent 1 GB, denk ik ..
toegevoegd de auteur emesx, de bron
Hij kreeg het oorspronkelijk verkeerd vanwege dit ongelooflijk populaire StackOverlow-antwoord dat voor iedereen problemen veroorzaakt: stackoverflow.com/questions/921262/…
toegevoegd de auteur Ben McCann, de bron
Antwoord accepteren misschien?
toegevoegd de auteur DagR, de bron
Raadpleeg dit antwoord voor een veel eenvoudigere manier om een ​​bestand te downloaden.
toegevoegd de auteur Stanley, de bron
Ik voel me nu een beetje gek, bedankt! Ik denk echt nooit om in de documenten te kijken, mijn slechte.
toegevoegd de auteur Ziddia, de bron
Ik ben niet zo goed met rekenen, vooral omdat ik op dit moment een beetje onwel ben. Kan iemand mij vertellen hoe ik dit kan verhogen tot bijvoorbeeld 200 MB? Of een ander bedrag, echt waar. :)
toegevoegd de auteur Ziddia, de bron
@DAGR Het vertelt me ​​dat ik het nog niet kan accepteren?
toegevoegd de auteur Ziddia, de bron

hier is nog een oplossing:

import java.io.*;
import java.net.*;
public class DownloadFile
{

    public static void main(String args[]) throws IOException
    {

        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(episode.getUrl()).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(episode.getLocalSave());
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos);
        byte data[] = new byte[1024];
        int read;
        while((read = in.read(data,0,1024))>=0)
        {
            bout.write(data, 0, read);
        }
        bout.close();
        in.close();
    }
}
4
toegevoegd