2010-04-29 64 views
0

當我在虛擬機器人(1.5)中運行代碼時,它運行良好,TextSwitcher顯示來自/ sdcard/documents /的每個txt文件的前80個字符,但是當我在Samsung Galaxy i7500(1.6)上運行它時,在TextSwitcher中沒有內容,但是在LogCat中有txt文件的FileName。Android - 無法從真實機器上的SDcard讀取TXT文件?

我的代碼:

 public void getTxtFiles(){ 
//Scan /sdcard/documents and put .txt files in array File TxtFiles[] 
    String path = Environment.getExternalStorageDirectory().toString()+"/documents/"; 
    String files; 
    File folder = new File(path); 
    if(folder.exists()==false){if (!folder.mkdirs()) { 
     Log.e("TAG", "Create dir in sdcard failed"); 
     return; 
    }} 
    else{ 
    File listOfFiles[] = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) 
    { 

    if (listOfFiles[i].isFile()) 
    { 
    files = listOfFiles[i].getName(); 
     if (files.endsWith(".txt") || files.endsWith(".TXT")) 
     { 
      if((files.length()-1)>i){resizeArray(TxtFiles, files.length()+10);} 
      TxtFiles[i]=listOfFiles[i]; 
      System.out.println(TxtFiles[i]); 
     } 
      } 
     }} 
    } 


private void updateCounter(int Pozicija) { 
if(Pozicija<0){Toast.makeText(getApplicationContext(), R.string.LastTxt, 5).show(); 
mCounter++;} 
else if(TxtFiles[mCounter]!=null){ 
    TextToShow = getContents(TxtFiles[mCounter]); 
    if(TextToShow.length()>80)TextToShow=TextToShow.substring(0, 80); 
    mSwitcher.setText(TextToShow); 
    System.out.println(Pozicija); 
    } 
else mCounter--; 
} 

    static public String getContents(File aFile) { 
    //...checks on aFile are elided 
    StringBuilder contents = new StringBuilder(); 

    try { 
     //use buffering, reading one line at a time 
     //FileReader always assumes default encoding is OK! 
     BufferedReader input = new BufferedReader(new FileReader(aFile)); 
     try { 
     String line = null; //not declared within while loop 
     /* 
     * readLine is a bit quirky : 
     * it returns the content of a line MINUS the newline. 
     * it returns null only for the END of the stream. 
     * it returns an empty String if two newlines appear in a row. 
     */ 
     while ((line = input.readLine()) != null){ 
      contents.append(line); 
      contents.append(System.getProperty("line.separator")); 
     } 
     } 
     finally { 
     input.close(); 
     } 
    } 
    catch (IOException ex){ 
     ex.printStackTrace(); 
    } 

    return contents.toString(); 
    } 

而且我能寫,雖然logcat的這些文件的內容!

任何想法?

+0

你可以發佈相關的logcat輸出嗎? – 2010-04-29 16:02:53

+0

當然:http://pastebin.com/FJBAzgq9 – JustMe 2010-04-29 18:12:24

回答

1

問題解決:Android基於Linux內核,具有文件權限。我想我的應用程序沒有權限在/ sdcard/documents /中的這些文件。