问题
I need to read the content of a file using a Linux Shell Command executed using Java in Android. What command do I need to execute in order to read all the text in the file and save in a String object?
Note that I can't use the simple Java I/O functions! The file that I need to read is in the device's system directory.
String command= "";
String file_path = "misc/file.txt";
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
String response = output.toString();
回答1:
File f=new File("path");
FileInputStream fin=new FileInputStream(f);
byte array[]=new byte[fin.avaialable()];
fin.read(array);
String string=new String(array);
is enough.Why don't you follow simple solutions?
Update
/**
* Execute a command in a shell
*
* @param command
* command to execute
* @return the return of the command
*/
public String exec(String command) {
String retour = "";
try {
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(command);
java.io.BufferedReader standardIn = new java.io.BufferedReader(
new java.io.InputStreamReader(p.getInputStream()));
java.io.BufferedReader errorIn = new java.io.BufferedReader(
new java.io.InputStreamReader(p.getErrorStream()));
String line = "";
while ((line = standardIn.readLine()) != null) {
retour += line + "\n";
}
while ((line = errorIn.readLine()) != null) {
retour += line + "\n";
}
} catch (java.io.IOException e) {
e.printStackTrace();
}
return retour;
}
Invoke it as exec("cat misc/file.txt");
来源:https://stackoverflow.com/questions/29796157/executing-a-process-in-android-to-read-a-file