2014-02-20 49 views
0

我尝试从应用程序专用存储目录中删除文件时遇到了一些问题,该文件以编程方式创建和压缩。从应用程序专用存储目录中删除文件 - Android

我面临的问题是,当我调用file.exists()时,它不会识别该文件存在,因此它不会删除该文件。

这是我使用的是要删除的文件

public static void deleteImageFromPrivateArea(final String fileUri) 
    { 
    final File file; 
    boolean isFileDeleted; 
    if (isFilePathPrefixPresent(fileUri)) 
    {//file name checking 
     file = new File(fileUri); 
    } 
    else 
    { 
     file = new File("file://" + fileUri); 
    } 

    if (file.exists()) 
    { 
     isFileDeleted = file.delete(); 
     if (! isFileDeleted) 
     { 
     throw new IllegalStateException("File was not deleted"); 
     } 
    } 
    } 
  1. 要搞清楚的代码,我知道我通过了fileURI是当前存在的文件的位置。我检查了一个文件管理器应用程序。

  2. 我有清单xml中设置的权限。

  3. 我认为正在发生的事情是,这段代码正在获取当前存在的文件的路径,并设置一个新文件但不向其写入数据,因此这个新文件在android中不存在。

所以我想我需要做的是让现有的文件(也许不是一个URI的形式,但实际的文件),然后调用.delete()作为那么该文件将存在。

或者

设立这个新的文件用了fileURI后,使用OutputfileStream将数据写入到它 - 这不会是我的首选方法,但。

-但我不完全确定。

回答

1

会更容易只是为了传递文件名作为参数,然后做

File mydir = getFilesDir(); //get your internal directory 
File myFile = new File(mydir, filename); 
myFile.delete(); 
+0

嘿,感谢您的帮助!这让我接近我需要的东西。而不是使用getFilesDir()我用_getExternalFilesDir(Environment.DIRECTORY_PICTURES)_ – Samuroid

1

的帮助从BradR我找到了最好的解决方案。

  1. 我用* getExternalFilesDir(Environment.DIRECTORY_PICTURES)*获得的应用程序的图片2.目录专用存储区。

  2. 用给定的imageUri创建一个新文件,然后用它获取文件的文件名。

  3. 重新初始化文件使用ExternalFilesDir

  4. 检查文件是否存在,创建一个新的文件并将其删除。

public static void deleteImageFromPrivateArea(final Context context, final String imageUri) 
    { 
    String filename; 
    File file; 
    final File dir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES); 

    if (isFilePathPrefixPresent(imageUri)) 
    { 
     file = new File(imageUri); 
    } 
    else 
    { 
     file = new File("file://" + imageUri); 
    } 

    filename = file.getName(); 
    file = new File(dir, filename); 

    if (file.exists()) 
    { 
     try 
     { 
     file.delete(); 
     } 
     catch (Exception e) 
     { 
     throw new IllegalStateException("File wasn't deleted"); 
     } 
    } 
    else 
    { 
     throw new IllegalStateException("File was doesn't exist"); 
    } 
    } 
相关问题