2013-04-20 61 views
0

我正在寫一個android應用程序,我需要在啓動時讀取7個SYSTEM文件。什麼是最有效的方式來做到這一點?Android最快的方式來讀取多個文件?

這是我的代碼,現在,它是相當緩慢

讀(文件1); read(file2); ... read(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製作一個shell腳本,並讀取輸出,但是所有東西都混在一起,我不能分割結果。

我試圖分裂回聲CMDS貓CMDS以在輸出deliminator: 「!」

cat file1 
echo ! 
cat file2 
echo ! 

但deliminators不顯示在輸出中,我不知道爲什麼。

有什麼建議嗎?

+2

爲什麼不使用Java的內置文件讀取器類? – Thomas 2013-04-20 19:20:30

+2

你的文件是一行嗎?就像@Thomas說的,你不需要使用Process。這可能會降低速度。 – 2013-04-20 19:37:14

+1

只需使用FileInputStream重新測試,現在速度更快,你們是對的。 – user1974977 2013-04-20 21:22:14

回答

0

我想你可以嘗試多個線程。 7可能會做得很好,但你必須檢查7是不是太多,你的目標是最慢的設備。你需要爲UI線程留下一些CPU。

+0

這可能是一個很好的解決方案,我不確定創建7個線程,每個讀取一個文件比我現在要做的要高效得多。這可能值得做一些測試 – user1974977 2013-04-20 19:31:16

相關問題