前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android通过URL文件下载及文件名提取

Android通过URL文件下载及文件名提取

原创
作者头像
谭广健
修改2020-08-07 17:52:05
3.8K0
修改2020-08-07 17:52:05
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

在写一个Android应用,需求也很简单就是通过接收JSON发送的数据进行解释获取URL的地址,然后根据这个地址把其文件下载。一下开始想用okhttp通过GET来下载问题,但问题是okhttp考虑得比较多也很完善(断线续传等);但这些我没必要也不需要这么复杂啊,那好吧简单点。就使用安卓自带的DownloadManager进行下载,不过用DownloadManager下载必须要满足API level 9以上,好在我的项目满足了,那就用呗,四行代码搞掂。

代码语言:javascript
复制
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
request.setDestinationInExternalPublicDir(fileDir, fileName);
DownloadManager downloadManager = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.enqueue(request);

也够清真的,那下载的问题解决了,但发现下载的文件名不是地址提供的文件名,好吧,最后用回地址给的文件名,这样方便管理和更新,于是又弄了一个提取文件名的函数。

代码语言:javascript
复制
public String GetFileName(String URL){
    int start=URL.lastIndexOf("/");
    int end=URL.lastIndexOf(".");
    if(start!=-1 && end!=-1){
        return pathandname.substring(start+1,end);
    }else{
        return null;
    }
}

具体怎么处理就不详说了,反正核心也就是2行。。

有同学私信我,说提取文件名的函数没有带后缀,,那好吧,上个可以获得后缀的。

代码语言:javascript
复制
public String getFileName(String urlname) {
        int start = urlname.lastIndexOf("/");
        int end = urlname.length();
        if (start != -1 && end != -1) {
            return urlname.substring(start+1,end);
        } else {
            return null;
        }
}

最后说说okhttp的确是一个很优秀清真的http框架,很多没想到或想到都已经处理得很好了。。

-完-

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档