【发布时间】:2014-02-20 18:43:07
【问题描述】:
我在尝试从我以编程方式创建和压缩的应用程序私有存储目录中删除文件时遇到了一些麻烦。
我面临的问题是当我调用 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" );
}
}
}
为了清楚起见,我知道我正在传递的 fileUri 是当前存在的文件的位置。我已经使用文件管理器应用进行了检查。
我在清单 xml 中设置了权限。
我认为正在发生的事情是这段代码正在获取当前存在文件的路径,并设置了一个新文件但没有将数据写入其中,因此这个新文件在 android 中不存在。
所以我认为我需要做的是获取现有文件(可能不是以 Uri 的形式,而是实际文件),然后调用 .delete() ,因为这样文件就会存在。
或者
在使用 fileUri 设置这个新文件后,使用 OutputfileStream 将数据写入其中 - 虽然这不是我的首选方法。
-但我不完全确定。
【问题讨论】:
标签: file-io android-file android