有没有办法在根目录(例如/data/)中写入和读取根目录中的 Android 手机上的文本文件?
InputStream instream = openFileInput("/data/somefile");
不工作
如果您是 root 用户,您只能访问 /data 文件夹。
通过 OutputStream 调用 SU 二进制并通过 SU 二进制写入字节(这些字节是命令)并通过 InputStream 读取命令输出,这很容易:
调用cat
命令以读取文件。
try {
Process process = Runtime.getRuntime().exec("su");
InputStream in = process.getInputStream();
OutputStream out = process.getOutputStream();
String cmd = "cat /data/someFile";
out.write(cmd.getBytes());
out.flush();
out.close();
byte[] buffer = new byte[1024 * 12]; //Able to read up to 12 KB (12288 bytes)
int length = in.read(buffer);
String content = new String(buffer, 0, length);
//Wait until reading finishes
process.waitFor();
//Do your stuff here with "content" string
//The "content" String has the content of /data/someFile
} catch (IOException e) {
Log.e(TAG, "IOException, " + e.getMessage());
} catch (InterruptedException e) {
Log.e(TAG, "InterruptedException, " + e.getMessage());
}
不使用 OutputStream 写入文件,OutputStream
用于在 SU 二进制文件中执行命令,并InputStream
用于获取命令的输出。
为了能够执行您所要求的操作,您必须通过 SU 二进制文件执行所有操作。
喜欢...
try {
Process process = Runtime.getRuntime().exec("su");
process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
阅读会比写作更容易,因为最简单的写作是将文件写入您可以使用标准 java api 访问的某个地方,然后使用 su 二进制文件将其移动到新位置。