【代码块】OkHttp下载文件

/**
 * 下载文件
 *
 * @param url      文件网络路径
 * @param filePath 文件下载本地路径
 * @param fileName 文件名称(包含后缀)
 * @param callBack 回调
 */
public void okHttpDownloadFile(String url, String filePath, String fileName, final CallBackDownloadFile callBack) {
    
    
    final File incompleteFile = new File(filePath, fileName + ".ysy");
    final File completeFile = new File(filePath, fileName);
    if (!incompleteFile.exists()) {
    
    
        try {
    
    
            incompleteFile.createNewFile();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
    Request request = new Request.Builder().url(url).build();
    new OkHttpClient().newCall(request).enqueue(new Callback() {
    
    
        @Override
        public void onFailure(@NotNull Call call, @NotNull IOException e) {
    
    
            incompleteFile.delete();
            callBack.onFailure(e);
        }

        @Override
        public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
    
    
            Sink sink = Okio.sink(incompleteFile);
            BufferedSink bufferedSink = Okio.buffer(sink);
            bufferedSink.writeAll(response.body().source());
            bufferedSink.close();
            incompleteFile.renameTo(completeFile);
            if (bufferedSink != null) {
    
    
                bufferedSink.close();
            }
            callBack.onDownloadOk(response.body().string());
        }
    });
}

猜你喜欢

转载自blog.csdn.net/qq_36881363/article/details/114015862