Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Java to download a mp3 file online?

I used the following method to download an mp3 file at : http://online1.tingclass.com/lesson/shi0529/43/32.mp3

But I got the following error :

java.io.FileNotFoundException: http:\online1.tingclass.com\lesson\shi0529\43\32.mp3 (The filename, directory name, or volume label syntax is incorrect)

  public static void Copy_File(String From_File,String To_File)
  {   
    try
    {
      FileChannel sourceChannel=new FileInputStream(From_File).getChannel();
      FileChannel destinationChannel=new FileOutputStream(To_File).getChannel();
      sourceChannel.transferTo(0,sourceChannel.size(),destinationChannel);
      // or
      //  destinationChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
      sourceChannel.close();
      destinationChannel.close();
    }
    catch (Exception e) { e.printStackTrace(); }
  }

Yet if I do it from a browser by hand, the file is there, I wonder why it didn't work, and what's the right way to do it ?

Frank

like image 999
Frank Avatar asked Sep 06 '10 19:09

Frank


People also ask

How do you make a file downloadable in Java?

We will use the copy(inputStream, fileOS) method to download a file into the local system. InputStream inputStream = new URL("http://example.com/my-file-path.txt").openStream(); FileOutputStream fileOS = new FileOutputStream("/Users/username/Documents/file_name. txt"); int i = IOUtils. copy(inpuStream, fileOS);

Does Java support MP3?

Java API Support for MP3 Format. Currently, both Clip and SourceDataLine can play audio files in AIFC, AIFF, AU, SND, and WAV formats. We can check the supported audio format using AudioSystem: Type[] list = AudioSystem.

How do I download an MP3 from a URL?

Press Ctrl+F, and enter MP3, or other audio tags the audio file may use. Once you locate the file address/link, you can open the link in a new browser page and download the audio. If you want to download the background music of web pages, you can also follow this step to find the audio and extract audio from websites.

How do I upload an MP3 to my website?

An easy way to embed audio on a website is by using a sound hosting site, such as SoundCloud or Mixcloud. All you need to do is upload the file and receive an HTML embed code. Then copy and paste the embed code into the web page's code or WYSIWYG site editor. This works for most CMS platforms and website builders.


3 Answers

Using old-school Java IO, but you can map this to the NIO method you are using. Key thing is use of 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();
like image 118
Joel Avatar answered Oct 17 '22 04:10

Joel


When you create a FileInputStream, you always access your local filesystem. Instead, you should use a URLConnection for accessing files over HTTP.

The indicator for this is that the forward slashes / have turned into backward slashes \.

like image 38
Roland Illig Avatar answered Oct 17 '22 04:10

Roland Illig


FileInputStream is used to access local files only. If you want to access the content of an URL you can setup an URLConnection or use something like this:

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);

Or more simply just make a BufferedInputStream from myUrlStream and cycle the read/write operation until EOF is found on myUrlStream.

Cheers, Andrea

like image 2
nivox Avatar answered Oct 17 '22 05:10

nivox