2012-01-17 71 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数据库。