6
votes

Comment utiliser Java pour télécharger un fichier MP3 en ligne?

J'ai utilisé la méthode suivante pour télécharger un fichier MP3 à l'adresse suivante: http://online1.tingclass.com/lesson/shi0529/43/32.mp3

mais j'ai eu l'erreur suivante:

java.io.filenotfoundException: http: \ online1.tingclass.com \ leçon \ shi0529 \ 43 \ 32.mp3 (nom de fichier, répertoire Le nom ou la syntaxe de l'étiquette de volume est incorrect) xxx

Pourtant, si je le fais depuis un navigateur à la main, le fichier est là, je me demande pourquoi cela n'a pas fonctionné, et Quelle est la bonne façon de le faire?

Frank


0 commentaires

3 Réponses :


2
votes

Lorsque vous créez un fichierInputStream , vous accédez toujours à votre système de fichiers local. Au lieu de cela, vous devez utiliser un urlconnection pour accéder aux fichiers sur http.

L'indicateur de ceci est que les barres obliques / ont été transformées en slashes en arrière \ .


0 commentaires

17
votes

Utilisation de la vieille école Java IO, mais vous pouvez mapper ceci sur la méthode NIO que vous utilisez. La chose clé est l'utilisation de l'urlconnection.

    URLConnection conn = new URL("http://online1.tingclass.com/lesson/shi0529/43/32.mp3").openConnection();
    InputStream is = conn.getInputStream();

    OutputStream outstream = new FileOutputStream(new File("/tmp/file.mp3"));
    byte[] buffer = new byte[4096];
    int len;
    while ((len = is.read(buffer)) > 0) {
        outstream.write(buffer, 0, len);
    }
    outstream.close();


0 commentaires

2
votes

FileInputStream est utilisé pour accéder uniquement aux fichiers locaux. Si vous souhaitez accéder au contenu d'une URL, vous pouvez configurer une URLConnection ou utiliser quelque chose comme ceci:

URL myUrl = new URL("http://online1.tingclass.com/lesson/shi0529/43/32.mp3");
InputStream myUrlStream = myUrl.openStream();
ReadableByteChannel myUrlChannel = Channels.newChannel(myUrlStream);

FileChannel destinationChannel=new FileOutputStream(To_File).getChannel();
destinationChannel.transferFrom(myUrlChannel, 0, sizeOf32MP3);


0 commentaires