Executing a Process in Android to read a file

2019-09-20 13:03发布

问题:

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