2013-04-20 2 views
0

Я пишу приложение для Android, и мне нужно прочитать 7 файлов SYSTEM при запуске. Какой был бы самый эффективный способ сделать это?Android самый быстрый способ читать несколько файлов?

Это мой код прямо сейчас, и это довольно медленно

чтения (file1); чтение (файл2); ... читать (файл7);

...

public static String read(String file) { 
    String fileContents = ""; 
    try { 
     String[] args = {"/system/bin/cat", file }; 
     ProcessBuilder cmd = new ProcessBuilder(args); 
     Process p = cmd.start(); 
     InputStream stream = p.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); 
     fileContents = reader.readLine(); 
     reader.close(); 
     stream.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return fileContents; 
} 

Там должен быть какой-то способ кошке каждый файл, не закрывая поток, который должен значительно ускорить процесс. Я попробовал создать сценарий оболочки с 7-мя котами cmds и прочесть вывод, но все все вышито вместе, и я не могу разделить результаты.

Я попытался расколоть кота CMDS с эхо-CMDS сформировать deliminator на выходе: "!"

cat file1 
echo ! 
cat file2 
echo ! 

Но deliminators не отображаются на выходе, и я не могу понять, почему.

Любые предложения?

+2

Почему вы не используете встроенные классы чтения файлов Java? – Thomas

+2

Ваши файлы в одной строке? Точно так же, как @Thomas говорит, вам не нужно использовать Process. Возможно, это может замедлить его. –

+1

Просто протестирован с FileInputStream и теперь намного быстрее, вы, ребята, были правы. – user1974977

ответ

0

Я думаю, вы могли бы попробовать несколько потоков. Вероятно, 7 будет очень хорошо, но вы должны проверить, не слишком ли для 7 самых медленных устройств, на которые вы нацеливаетесь. Вам нужно оставить некоторый процессор для потока пользовательского интерфейса.

+0

Это может быть хорошим решением, я не уверен, что создание 7 потоков для чтения одного файла было бы намного более эффективным, чем то, что я делаю сейчас. Возможно, стоит попробовать – user1974977

Смежные вопросы