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

2020-08-07 17:52:05 浏览数 (1)

在写一个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框架,很多没想到或想到都已经处理得很好了。。

-完-

0 人点赞