ssseasonnn / RxDownload

A multi-threaded download tool written with RxJava and Kotlin
Apache License 2.0
4.14k stars 612 forks source link

为何下载成功后会是临时.download结尾的文件,只有再次下载方能下载成功 #315

Open hezheng1978 opened 4 years ago

hezheng1978 commented 4 years ago
    disposable = RxDownloadKt.download(url).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Progress>() {
        @Override
        public void accept(Progress progress) throws Exception {
            CLog.e("progress:" + progress.percentStr());
        }
    }, new Consumer<Throwable>() {
        @Override
        public void accept(Throwable throwable) throws Exception {
            CLog.e("throwable:"+throwable.getMessage());
        }
    }, new Action() {
        @Override
        public void run() throws Exception {
            File file = RxDownloadKt.file(url);
            CLog.e("下载完成:" + file.getAbsolutePath()+ ",exists:" +file.exists());
        }
    });

打印日志无异常信息,进度100%完成后,日志文件显示该文件不存在,但是存储位置存在以.download和.tmp的2个文件。如果再次运行这段程序,则下载成功,不再有临时文件。

运行于夜神模拟器

ssseasonnn commented 4 years ago

可以在下载完成后手动修改文件名

hezheng1978 commented 4 years ago

可以在下载完成后手动修改文件名

哦,好的,谢谢!

zhangnin commented 3 years ago

我也遇到这个问题了【mumu和夜神模拟器都有问题】,我看了问题出现的位置是在RangeDownloader的startDownload方法doOnComplete的回调上,文件的操作都失败了: shadowFile.renameTo(file) 和 tmpFile.delete() 都没有生效,手动修改也不生效,最后我是通过复制文件来解决的。