【问题标题】:Android incompeted download fileAndroid 不兼容的下载文件
【发布时间】:2014-08-16 09:33:38
【问题描述】:

我尝试从 URL 下载音频。我使用来自 Github 的以下示例下载管理器代码 https://github.com/folee/Download_Mgr

我的问题是如果我取消下载,不完整的 mp3 文件仍然存在于 SD 卡中。如何删除不完整的 mp3 文件?

 @Override
    public void onClick(View v) {
        Intent downloadIntent = new Intent(DownloadValues.Actions.DOWNLOAD_SERVICE_ACTION);

        switch (v.getId()) {
        case R.id.btn_continue:
            // mDownloadManager.continueTask(mPosition);
            downloadIntent.putExtra(DownloadValues.TYPE, DownloadValues.Types.CONTINUE);
            downloadIntent.putExtra(DownloadValues.URL, url);
            mContext.startService(downloadIntent);

            mViewHolder.continueButton.setVisibility(View.GONE);
            mViewHolder.pauseButton.setVisibility(View.VISIBLE);
            break;
        case R.id.btn_pause:
            // mDownloadManager.pauseTask(mPosition);
            downloadIntent.putExtra(DownloadValues.TYPE, DownloadValues.Types.PAUSE);
            downloadIntent.putExtra(DownloadValues.URL, url);
            mContext.startService(downloadIntent);

            mViewHolder.continueButton.setVisibility(View.VISIBLE);
            mViewHolder.pauseButton.setVisibility(View.GONE);
            break;
        case R.id.btn_delete:
            // mDownloadManager.deleteTask(mPosition);
            downloadIntent.putExtra(DownloadValues.TYPE, DownloadValues.Types.DELETE);
            downloadIntent.putExtra(DownloadValues.URL, url);
            mContext.startService(downloadIntent);

            removeItem(url);
            break;
        }
    }

我的文件浴:

 public class ConfigUtils {

 public static void InitPath(Context ctx) {
    File temFile = Environment.getExternalStorageDirectory();

    if (temFile != null && temFile.canWrite() && Util.getAvailableExternalMemorySize() > 0) {
        IMG_PATH = Environment.getExternalStorageDirectory().getPath() + "/DL_Mgr/Image/";
        FILE_PATH = Environment.getExternalStorageDirectory().getPath() + "/DL_Mgr/Downloads/";
    }
    else {
        IMG_PATH = ctx.getFilesDir() + "/Image/";
        FILE_PATH = ctx.getFilesDir() + File.separator;
    }

    new File(IMG_PATH).mkdirs();
    new File(FILE_PATH).mkdirs();
    Log.i(TAG, "IMG_PATH-->" + IMG_PATH + "\n FILEPATH-->" + FILE_PATH);
}

}

我使用此代码删除临时文件但不起作用

 case R.id.btn_delete:

            File tempFile = new File(ConfigUtils.FILE_PATH + "filename".toString());
            if(tempFile.exists()) {
                tempFile.delete();
            } 

但它不起作用 编辑: 工作代码:(如果下载 mp3 临时文件,如:“sample.mp3.download”

所以我改变了这样的代码,它工作正常

 File tempFile = new File(ConfigUtils.FILE_PATH + filename +".download".toString());
            if(tempFile.exists()) {
                tempFile.delete();
            } 

【问题讨论】:

    标签: android download mp3


    【解决方案1】:
    • 开始下载之前。您必须知道保存文件的位置。所以可能是指向 sdcard 中文件的绝对路径或 Uri 您提供给下载管理器以存储您的文件。

    • 如果取消。从该 uri 或绝对路径创建一个文件对象,并在文件对象上调用 delete(如果存在)。 像这样的

      File tempFile = new File(uri.toString());
      if(tempFile.exists()) {
          tempFile.delete();
      } 
      

    这应该很简单。谷歌一下

    【讨论】:

    • 检查我更改了我的代码,但它不起作用.. 我的 SD 卡中仍然有“sample.mp3.download”
    • @Mullinsangebn ConfigUtils.FILE_PATH.toString()。这是否包含文件的完整绝对路径?如果是,请检查并记录 tempFile.exists() 调用的值
    • 还有 FILEPATH 似乎是一个目录而不是一个文件。你必须检查你的文件对象是否是目录。如果是,您必须为每个文件迭代目录并创建它们的 exh 文件对象并单独删除它们
    • ConfigUtils.FILE_PATH 只是下载文件夹名称,所以我添加了 File tempFile = new File(ConfigUtils.FILE_PATH +"filename".toString());
    • 这个也不起作用...我仍然有一个名为“1.mp3.download”的临时文件。这一项工作正常 File tempFile = new File(ConfigUtils.FILE_PATH+"1.mp3.download".toString());我们还需要带有“.download”的文件名,现在它可以工作了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2013-08-31
    • 2020-01-26
    • 2012-09-05
    • 2017-05-29
    相关资源
    最近更新 更多