【问题标题】:How can i delete and rename a file in Android?如何在 Android 中删除和重命名文件?
【发布时间】:2016-04-18 11:32:53
【问题描述】:

您好,我一直在寻找删除或重命名手机内部存储器中特定文件的方法。具体来说,我的目标是 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();

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

【问题讨论】:

    标签: android file rename


    【解决方案1】:

    为了完成@CommonsWare 回答,您可以检查设备是否已root,然后执行方法或其他操作。

    这是一个例子,

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

    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"); 
    }
    

    或者你可以看看:

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

    https://github.com/Chainfire/libsuperuser

    此外,在您的清单中也使用以下权限:

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

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

    https://github.com/mtsahakis/RootChecker

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 真是太伤心了jaja!感谢您的帮助!
      猜你喜欢
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 2018-11-14
      • 2013-10-08
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      相关资源
      最近更新 更多