删除正在使用的某些文件夹时,Android App无法正常工作

时间:2014-10-08 12:02:46

标签: java android file

我遇到的问题是,当用户删除正在使用的某些文件夹时,我的Android应用程序无法正常工作 要解决此问题,每次应用程序访问(创建或修改文件)文件夹时,都会调用一个函数来确保该文件夹存在。

    /** 
 * ensure that cache folder exists<br/>
 * */
public void ensureCacheFolderExist(){   
    File cacheFile = new File(AUDIO_CACHE_PATH);
    if (!cacheFile.exists()) {
        boolean returnValue=cacheFile.mkdirs();
        MusicUtils.logE("ensureCacheFolderExist no"+returnValue);
    } else {
        MusicUtils.logE("ensureCacheFolderExist yes");
        if (cacheFile.isFile()) {
            cacheFile.delete();
        }
    }
}

但returnValue始终为false 所以这似乎不起作用。
可能的方法是将AUDIO_CACHE_PATH文件夹设置为隐藏文件。系统默认文件管理器无法看到它。但是第三方可以看到,例如Root Explorer。 这似乎不是最佳选择 有没有办法解决这个问题? AUDIO_CACHE_PATH定义如下(Just key point),我可以确保问题不是由此引起的:

    public static String getSDCardPath() {
    //String szDir = Environment.getExternalStorageDirectory().getPath();
    String szDir = Environment.getExternalStorageDirectory().getAbsolutePath();
    if (szDir.substring(szDir.length() - 1).equals(File.separator) == false) {
        szDir += File.separator;
    }
    return szDir;
}
public static final String DOWNLOAD_LOCAL_PATH = HardwareUtil.getSDCardPath() + "sogouappmall";     
private final String AUDIO_CACHE_PATH = DOWNLOAD_LOCAL_PATH + File.separator + ".mp3";

1 个答案:

答案 0 :(得分:0)

除非你的存储卡内存不足,否则我看不出它没有做mkdirs的原因。我希望你已经获得了明确的许可。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

只是为了排除路径问题,请替换

    File cacheFile = new File(AUDIO_CACHE_PATH);

    File cacheFile = new File(Environment.getExternalStoragePublicDirectory(
          Environment.DIRECTORY_DCIM), "sogouappmall/mp3");