如何在Android中删除和重命名文件?

时间:2016-01-13 13:09:37

标签: android file rename

您好我一直在寻找删除或重命名手机内部存储空间中特定文件的方法。具体来说,我的目标是waze文件夹中的文件,它们位于内部存储的根文件夹中。正如我所说,我寻找更多关于此的信息,但没有任何对我有用,所以我认为我的错误可能在我正在使用的路径中。这是我的代码:

重新开始:

    file_Path = "/data/data/waze"
    File from      = new File(file_Path, "currentFileName");
    File to        = new File(file_Path, "newFilename");
    from.renameTo(to); //this method returns me False

要删除:

file_Path ="/data/data/waze/file"
File file = new File(file_Path);
boolean deleted = file.delete();

我尝试了很多方法来做到这一点,但这是我认为接近它的方法。所以如果你们中的任何人都能指出我的错误,我会感谢你们!来自哥斯达黎加的拥抱!

2 个答案:

答案 0 :(得分:7)

除了您自己的应用程序文件之外,您对internal storage上的文件没有读取或写入权限。您无法重命名或删除其他应用中的文件,例如Waze。

例外情况是,在root设备上,您可以要求以超级用户权限派生进程,并且这些进程将具有设备范围的读/写访问权限。

答案 1 :(得分:1)

要完成@CommonsWare答案,您可以检查设备是否已植根,然后执行方法或其他操作。

这是一个例子,

取自http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/

.//img[contains(@onclick, 'EditResource')]

或者你可以看看:

  

http://su.chainfire.eu/#how

     

https://github.com/Chainfire/libsuperuser

并且,在您的清单中也使用以下权限:

Process p; 
try { 
   // Preform su to get root privledges
   p = Runtime.getRuntime().exec("su"); 

   // Attempt to write a file to a root-only 
   DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
   os.writeBytes("echo \"Do I have root?\" >/system/sd/temporary.txt\n");

   // Close the terminal
   os.writeBytes("exit\n"); 
   os.flush(); 
   try { 
      p.waitFor(); 
           if (p.exitValue() != 255) { 
              // TODO Code to run on success
              toastMessage("root");
           } 
           else { 
               // TODO Code to run on unsuccessful
               toastMessage("not root");    
           } 
   } catch (InterruptedException e) { 
      // TODO Code to run in interrupted exception
       toastMessage("not root"); 
   } 
} catch (IOException e) { 
   // TODO Code to run in input/output exception
    toastMessage("not root"); 
}

或者在Github上有一个很好的例子:

https://github.com/mtsahakis/RootChecker