2011-08-08 14 views
0

我有一個文本文件放置在資產中,我想一次讀取它的一行。我的問題是我不知道如何訪問Activity中的文件,然後一旦我訪問它,我將如何去選擇一行?讀取資產中的一個txt文件的行

如果在資產中保留txt文件是一個壞主意,我應該在哪裏放置它以便於訪問?

我真的很感謝任何幫助!

回答

1

要打開入資產價值,你就需要調用

<context>.getAssets().open(<your file>); 

<context>是你的活動,所以如果這是你的onCreate,那麼這將是this。該調用返回一個輸入流,然後您可以隨意處理。

我不明白如何讓文本文件保留在那裏是一個特別糟糕的主意,取決於你使用的文本文件。

+0

謝謝!結合使用代碼將輸入流更改爲bufferedreader,然後使用我的方法來讀取bufferedreader的一行完美工作! –

+0

嗯,其實我現在遇到了一些麻煩,如果我想把這個代碼插入onClick按鈕?當我嘗試時,它表示它沒有定義OnClickListener。我該怎麼做才能解決這個問題? –

+0

什麼是未定義的? – Otra

2

這是我用於預填充RSS提要閱讀器中表格的代碼片段。您可以將其用作滿足您需求的軌道。我有文件feeds.txt。該文件被引用的代碼是R.raw.feeds

final Resources resources = mHelperContext.getResources(); 
    InputStream inputStream = resources.openRawResource(R.raw.feeds); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream), 8192); 

    try { 
     String line; 
     while ((line = reader.readLine()) != null) { 
      //make the use you want with "line" 
     } 
    } catch (IOException e) { 
     Log.e(TAG, "Error loading sample feeds."); 
     throw new RuntimeException(e); 
    } 
+0

謝謝!我用res/raw中的文件嘗試過,但我認爲我現在只是將它保留在資產中! –

-1

試試這個:

製作例如readMyFile的新方法()。 它必須看起來像這樣:

private String readMyFile(File file) throws IOException { 
    BufferedReader reader = new BufferedReader(new FileReader(file)); 
    StringBuilder txt = new StringBuilder(); 
    String line; 

    while ((line = reader.readLine()) != null) { 
     txt.append(line); 
     txt.append("\n"); 
} 

reader.close(); 
return txt.toString(); 

將其粘貼到您的代碼,並使用方法(readMyFile()要在資產讀什麼文件]

希望它可以幫助