/data/data/XXXX/files/ 下文件的删除操作

kwfelix 发布于 2013/01/01 11:34
阅读 2K+
收藏 0

@邓凡平 你好,想跟你请教个问题:

   大侠,还有一个问题!

        需要把一些文件先拷贝到/data/data/XXXX/files/,拷贝成功后,由于需要需要删除下面指定的文件,但是奇怪的是我获取文件路径后,调用file.exsit()显示文件存在,但是调用file.delete()返回false,不知道是文件本来就不可以删除,还是其他原因,这里先谢过了!这里的删除是否需要root权限?但是读写是不需要的!

加载中
0
邓凡平
邓凡平
不知道。没有报错原因吗?如果不行,应该是权限问题。
0
mtfan
mtfan
首先你先看你有没有权限,当然是指的运行程序的用户
0
邓凡平
邓凡平
多谢了 哈哈
0
k
kwfelix

引用来自“mtfan”的答案

首先你先看你有没有权限,当然是指的运行程序的用户
怎么看有没有权限呢?目前当然是可以操作读写这些文件,但是不能直接删除!比较烦!
0
mtfan
mtfan
SecurityManager security = System.getSecurityManager();
if (security != null) {
 security.checkDelete(path);

}

path为你要删除的文件路径  你先查看以下你能否获取到安全管理器

0
R
Rokon
这个目录是应用程序的私有目录,当前的应用程序是可以执行删除操作的,如果是另外的应用程序指定去删除那个文件夹下的文件是有权限限制的
0
k
kwfelix

引用来自“Rokon”的答案

这个目录是应用程序的私有目录,当前的应用程序是可以执行删除操作的,如果是另外的应用程序指定去删除那个文件夹下的文件是有权限限制的

呵呵,各位真不好意思,我范了个低级错误。文件夹要删除,必须先把文件夹里面的文件都删除。我之前写的代码不对!

贴个代码,呵呵!

//删除文件的方法
public static boolean deleteFile(String sPath) {   
   boolean flag = false;   
   File file = new File(sPath);   
   // 路径为文件且不为空则进行删除   
   if (file.isFile() && file.exists()) {   
       file.delete();   
       flag = true;   
   }   
   return flag;   
}  
//删除文件夹的方法
public static boolean deleteDirectory(String sPath) {   
boolean flag=false;
   //如果sPath不以文件分隔符结尾,自动添加文件分隔符   
   if (!sPath.endsWith(File.separator)) {   
       sPath = sPath + File.separator;   
   }   
   File dirFile = new File(sPath);   
   //如果dir对应的文件不存在,或者不是一个目录,则退出   
   if (!dirFile.exists() || !dirFile.isDirectory()) {   
       return false;   
   }   
   flag = true;   
   //删除文件夹下的所有文件(包括子目录)   
   File[] files = dirFile.listFiles();   
   for (int i = 0; i < files.length; i++) {   
       //删除子文件   
       if (files[i].isFile()) {   
           flag = deleteFile(files[i].getAbsolutePath());   
           if (!flag) break;   
       } //删除子目录   
       else {   
           flag = deleteDirectory(files[i].getAbsolutePath());   
           if (!flag) break;   
       }   
   }   
   if (!flag) return false;   
   //删除当前目录   
   if (dirFile.delete()) {   
       return true;   
   } else {   
       return false;   
   }   
}  


0
k
kwfelix

引用来自“mtfan”的答案

SecurityManager security = System.getSecurityManager();
if (security != null) {
 security.checkDelete(path);

}

path为你要删除的文件路径  你先查看以下你能否获取到安全管理器

已经知道问题所在了,是我犯了个低级错误!代码已经修正!见下面回复!

再请教下,你这段代码有什么作用?似乎也没有返回值!

上网搜了下,好像解释安全管理器的文章不多!

返回顶部
顶部