Как читать текст из файла SDCard? - PullRequest
0 голосов
/ 08 декабря 2011

У меня проблема.Я создаю текстовый файл с кодом test.txt, затем получаю текст из системного файла с помощью команды cat, и этот текст помещается в мой test.txt, но я не знаю, как прочитать текст из этого файла.Мне нужно прочитать текст из этого файла и затем сохранить его в моих SharedPreferences.Вот код:

try {
            FileOutputStream fos = new FileOutputStream("/sdcard/test.txt");
            DataOutputStream dos = new DataOutputStream(fos);
            dos.flush();
            dos.close(); 
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Process a;
        try {
            a = Runtime.getRuntime().exec("su"); 

            DataOutputStream aaa = new DataOutputStream(a.getOutputStream());
            aaa.writeBytes("cat /proc/sys/sad/asdsad > /sdcard/test.txt\n");
            aaa.writeBytes("exit\n"); 
            aaa.flush();
            try {
                a.waitFor();
                if (a.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");
            }

1 Ответ

3 голосов
/ 09 декабря 2011

Вам не нужно «копировать» файл на sdcard, чтобы прочитать его.

И в любом случае, использование «кошки» для копирования не то, что вы хотите в приложении.Поскольку вы теряете контроль над операцией;обнаружение и обработка ошибок становится намного сложнее.

Просто используйте FileReader и BufferedReaderПример можно найти здесь .Вот копия:

File file = new File("test.txt");
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;

try {
    reader = new BufferedReader(new FileReader(file));
    String text = null;

    // repeat until all lines is read
    while ((text = reader.readLine()) != null) {
        contents.append(text)
            .append(System.getProperty(
                "line.separator"));
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (reader != null) {
            reader.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}           

Log.e("TEXT", contents.toString());

Все это очень простые вещи.Вам следует почитать книгу по Java или несколько статей.

...