从Internet下载文件

时间:2014-04-17 22:22:43

标签: java android

我正在尝试将互联网上的MP3文件下载到Android中的SD卡。 我知道桌面Java等价,但因为我想利用一些有趣的基于Android的SDK,所以我决定尝试编写移动应用程序。

要学到很多东西,我觉得我跳了很多步。

我在Java中做了类似的事情:

    File outputSong = new File("outputFolder/testSong.mp3");
    is1 = new URL(currentSong).openStream();
    ReadableByteChannel rbc = Channels.newChannel(is1);
    FileOutputStream fos = new FileOutputStream(outputSong);
    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
    fos.close();

但Android并不喜欢这样。我看了这里,developer.android网站,以及一些关于如何处理文件的互联网教程。我试过这样做:

    String currentSong = "http://nyan.90g.org/e/1/50/9f755b639fa518e7f5580b648c7b2f60.mp3";
    String currentArtwork = "http://moefou.90g.org/wiki_cover/000/00/29/000002938.jpg";
    String fileName = "";
    URLConnection conn = new URL(currentArtwork).openConnection();
    conn.setUseCaches(false);
    int lastSlash = conn.getURL().toString().lastIndexOf('/');
    if (lastSlash>=0)
        fileName = conn.getURL().toString().substring(lastSlash+1);
    if (fileName.equals(""))
        fileName = conn.getURL().hashCode() + ".jpg";
    BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
    File outputArtwork = new File(Environment.getExternalStorageDirectory() + "/" + fileName);
    FileOutputStream fos = new FileOutputStream(outputArtwork);
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    byte[] data = new byte[8192];
    int bytesRead = 0;
    while((bytesRead = bis.read(data, 0, data.length)) >= 0) {
        bos.write(data, 0, bytesRead);
    }

    bos.close();
    bis.close();

我让它工作ONCE,现在我没有成功尝试重复这个动作。我获得了明确的权限。如果有人能告诉我他们将如何解决这个问题,我将不胜感激。

虽然我在这,但每个人都说要使用logcat。这就像打印到控制台?这会有所帮助。

0 个答案:

没有答案