2012-01-17 67 views
-1

我有一個文本文件形式的數據庫,我的工作是解析txt文件並在列表視圖中顯示數據。我不知道從哪裏開始。閱讀文本文件數據庫並顯示結果

繼承人是一個示例條目。 「| 9251115 |,| 0 | | |詳情|,||,||,|標題價格文本|,||,||

其中每個||代表一個字段。標題價格和文本(p,b)

我的第一個想法是將其解析爲類似於xml文檔,即讓它創建一個以「|」開始的新行,填充它之間的所有內容,並結束行時到達下一個「|」但我仍然對如何做到這一點還沒有具體的想法

編輯:

現在把它一步步時間使用STRINGT。 okenizer逐行讀取它並刪除「,」開始。出現問題時,顯示結果的文本視圖由於某種原因顯示爲false,而不是掃描的文本。如果有人需要一個好頭腦的人,這裏是我的代碼。

Context myContext;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView t = (TextView) findViewById(R.id.text); 
    st = new ArrayList<property>(); 

    try 
    { 
     InputStream is; 
     is = myContext.getAssets().open("rooms.txt"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); 
     String read = br.readLine(); 
     while(read != null) 
     { 
      StringTokenizer st = new StringTokenizer(read,","); 
      { 
       while(st.hasMoreTokens()) 
       { 
        String a = st.nextToken(); 
        String b = st.nextToken(); 
        String c = st.nextToken(); 
        String d = st.nextToken(); 
        String e = st.nextToken(); 
        String f = st.nextToken(); 
        String g = st.nextToken(); 
        String h = st.nextToken(); 
        t.setText(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h); 
       } 
      } 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

回答

0

雖然你可以使用純Java代碼肯定實現自己的解析器,你應該考慮使用SQLite數據庫(1)存儲數據,這將允許你插入,刪除,更方便地修改和查詢。

如果你的數據庫來使用該格式從外部源,我會寫一個分析數據,並將其插入到以備將來使用SQLite數據庫一次性解析器。

請記住,在Android設備上的CPU比一般的PC CPU慢,所以如果你所有的時間分析大量數據的格式,你的應用程序可能會變得非常緩慢。因此,我建議將其轉換爲數據庫。

你在這種情況下的另一個選擇就是像你說的那樣使用XML,因爲那裏有即時可用的解析器。但關於性能的建議依然存在:您應該真正避免始終重新分析數據,而是將其存儲爲隨時可用的格式。

(1):http://developer.android.com/reference/android/database/sqlite/package-summary.html

+0

感謝您的答覆,在目前這個文本文件存儲在本地上我的筆記本電腦,但原來的文件到了上FileZilla中,我的工作的最終版本將要訪問該文件我猜測,將SQLite數據庫仍在這種情況下工作?你也知道任何好的教程嗎? – 2012-01-17 16:15:52

+0

道歉,如果我覺得太業餘 – 2012-01-17 16:50:45

0

這裏是我會怎麼做,

Have an object with getter/setter 
Have a list intialized 
1) You need to use StreamReaders/Bufferedreader to read the file 
2) If each is not empty 
    2a) Use StringTokenizer to parse the string with "," as delimiter 
    2b) Set tokenized values to object 
    2c) Add object to list 
3) return the list created in above step. 

注意:如果大量的數據需要同時讀取整個文件要小心了,你可能會得到的OutOfMemoryError。

+0

你有一個非常簡單的例子嗎? – 2012-01-18 11:46:19

0

布魯諾奧利維拉給了很好的建議。

你可以通過逐行閱讀來解析文件,然後使用string.split方法,因爲你可以將所有的數據放在一個數組中,在這個數組中你可以輕鬆地讀取並放入列表視圖或將其移動到sqlite數據庫。