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: p>
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) p> 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? P> Frank P> P>
3 Réponses :
Lorsque vous créez un L'indicateur de ceci est que les barres obliques fichierInputStream code>, vous accédez toujours à votre système de fichiers local. Au lieu de cela, vous devez utiliser un
urlconnection code> pour accéder aux fichiers sur http. P>
/ code> ont été transformées en slashes en arrière
\ code>. p>
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();
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);