android-关于下载网络资源以及写入到SD卡中

今天下载网络资源的写法。首先,相关的类有:URL,HttpURLConnection

如何获取网络资源的输入流?见代码:

                url = new URL(urlStr);
                HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();
                inputStream = urlconn.getInputStream();

其中urlStr是下载资源的连接,如:http://192.168.2.100:8080/sourse/aa.mp3

这样就能获取输入流,然后写入SD卡,SD卡路径的获取方式:

SDPATH = Environment.getExternalStorageDirectory() + "/";

使用之前,记得加入permission:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

对于如何将InputStream写入SD卡中,我们可以使用java基础的输入输出流

这里给一个简单的方法:

    /**
     * 将一个InputStream里面的数据写入到SD卡中
     * @param path 保存在SD中的路径
     * @param fileName 文件名
     * @param inputStream 需要写入的数据
     * @return 成功写入的文件
     */
    public File write2SDFromInput(String path,String fileName,InputStream inputStream) {
        File file = null;
        OutputStream outputStream = null;
        try {
            createSDDir(path);
            file = createSDFile(path + fileName);
            outputStream = new FileOutputStream(file);
            byte buffer[] = new byte[4*1024];
            int downLoadFilePosition = 0; //用于标记进度条
            int numread;
            while ((numread = inputStream.read(buffer))!=-1) {
                outputStream.write(buffer,0,numread);
                downLoadFilePosition += numread;
            }
            outputStream.flush();
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return file;
    }

代码中的downLoadFilePosition是用于标记下载进度的,不过在此之前,需要获取文件的大小(充当分母)。

如何弄个下载进度,请结合之前讲得Handler一起使用。

ps:在下在写入文件的时候

outputStream.write(buffer,0,numread);

这句话换成

outputStream.write(buffer);

发现是只能写入部分的。查了一下java的api。发现两者的方法区别是:

public void write(byte[] b)
=
public void write(b,0,b.length()
也就是两者没有区别,所以,如果读者知道理由,麻烦告知一下,谢谢。


今月今日的学习记录到此结束了,谢谢观看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下载androidffmpeg,你可以采取以下步骤: 1. 在你的电脑上打开一个网页浏览器,如Google Chrome、Mozilla Firefox等。 2. 进入FFmpeg的官方网站(https://www.ffmpeg.org/)。 3. 在官方网站上,点击“Download”或其他类似的选项。 4. 在下载页面上,选择适用于Android操作系统的版本,可能是一个预编译的包或源代码。 5. 点击下载按钮开始下载。这可能需要一些时间取决于你的网络速度。 6. 下载完成后,将下载的文件保存到你的计算机上,例如桌面或下载文件夹。 7. 将Android设备通过USB连接到你的计算机上。 8. 在你的Android设备上启用“开发人员选项”和“USB调试模式”,这两个选项通常位于设备设置的开发者选项。 9. 在电脑上,打开文件浏览器并浏览到下载androidffmpeg文件。 10. 将androidffmpeg文件复制到你的Android设备的存储,例如内部存储或SD卡。 11. 断开USB连接并在Android设备上打开文件管理器。 12. 浏览到存储位置(内部存储或SD卡androidffmpeg文件。 13. 点击androidffmpeg文件开始安装。你可能需要允许从未知来源安装应用程序的权限。 14. 完成安装后,你现在可以在你的Android设备上使用androidffmpeg了。 请注意,上述步骤可能因不同的Android设备和操作系统版本而有所不同。在进行下载和安装之前,请确保你已经阅读了相关的官方文档或提供的说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小明是我的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值