2013-04-20 4 views
0

안드로이드 앱을 쓰고 있는데, 시작시 7 개의 SYSTEM 파일을 읽어야합니다. 이 작업을 수행하는 가장 효율적인 방법은 무엇입니까?Android에서 가장 빠른 방법으로 여러 파일을 읽을 수 있나요?

이 내 코드는 바로 지금이며

읽기 (파일 1) 매우 느린; 읽기 (file2); ... 읽기 (file7);

...

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와 출력을 읽고 껍질 스크립트를 만들려고했는데 모두 다 함께 으깬되고 결과를 나눌 수 없다.

나는 출력에 deliminator 형성 에코 CMDS와 고양이 CMDS을 분할 시도 : ""

cat file1 
echo ! 
cat file2 
echo ! 

그러나 deliminators을 출력에 나타나지 않고 그 이유를 알 수 없습니다.

제안 사항?

+2

Java의 내장 파일 판독기 클래스를 사용하지 않는 이유는 무엇입니까? – Thomas

+2

파일이 한 줄입니까? @Thomas와 마찬가지로 Process를 사용할 필요가 없습니다. 이것은 속도를 늦추는 요인 일 수 있습니다. –

+1

FileInputStream을 사용하여 다시 테스트 해 보니 이제는 훨씬 빠릅니다. – user1974977

답변

0

여러 스레드를 시도해 볼 수 있습니다. 아마 7은 괜찮을 것이지만, 7이 당신이 목표로 삼는 가장 느린 장치에 너무 많지 않은지 확인해야합니다. UI 스레드 용으로 CPU를 남겨 두어야합니다.

+0

그건 좋은 해결책이 될 수 있습니다, 나는 하나의 파일을 읽을 수있는 각각의 스레드를 만드는 것이 훨씬 더 효율적 일 것이라고 생각합니다. 몇 가지 테스트를 해보는 것이 가치가있을 수 있습니다. – user1974977

관련 문제