Est-ce que quelqu'un sait comment télécharger le fichier à partir d'Internet, en utilisant l'URL (http://.../File.mp4)? J'essaie d'utiliser NIO, mais toujours la fin du flux sur Integer.MAX_VALUE. Mon fichier est 2.5Go.Java- Comment télécharger le fichier de l'URL, plus grand que Integer.MAX_VALUE
Mon code:
String url = "http://.../Somefile.mp4";
String filename = "Path/to/file/Something.mp4";
boolean koncano = false;
URLConnection conn = new URL(url).openConnection();
conn.setRequestProperty("Range", "bytes=" + new File(filename).length() + "-");
ReadableByteChannel rbc = Channels.newChannel(conn.getInputStream());
long remain = conn.getContentLength();
FileOutputStream fos = new FileOutputStream(filename, true);
while (!koncano) {
long downloaded = new File(filename).length();
long buffer = (remain > 65536) ? 1 << 16 : remain;
while (remain > 0) {
long write = fos.getChannel().transferFrom(rbc, downloaded, buffer);
downloaded += write;
remain -= write;
if (write == 0) {
break;
}
}
if (remain <= 0) {
System.out.println("File is complete");
rbc.close();
fos.close();
koncano = true;
}
}
Bienvenue dans Stack Overflow! Les questions qui cherchent une aide au débogage («pourquoi ce code ne fonctionne-t-il pas?») Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question elle-même. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Voir: Comment créer un [mcve]. Utilisez le lien "modifier" pour améliorer votre * question * - ne pas ajouter plus d'informations via des commentaires. Merci! – GhostCat
Ne pas faire un lien vers un site externe - fournissez ici un exemple de code, dans votre demande! – GhostCat
Je suppose que vous utilisez un 'HttpURLConnection' ou sth. similaire qui utilise un 'ByteArrayInputStream'. Cela à son tour utilise un 'byte []' et les tableaux Java ont une longueur maximale de 'Integer.MAX_VALUE'. – Thomas