【问题标题】:What is the best method to reading in a file in Android word by word逐字读取Android文件的最佳方法是什么
【发布时间】:2013-08-02 16:07:30
【问题描述】:

我希望在我的应用程序中读取文本文件,但我需要逐字读取,而不是逐行读取。我已经习惯了 Java 和带有 hasNext() 方法的 Scanner 类,所以我目前正在使用它。这是我的代码:

        try
    {
        FileInputStream fis = openFileInput(FILENAME);
        Scanner infile = new Scanner(new InputStreamReader(fis));

        while(infile.hasNext())
        {
            accName = infile.next();
            uName = infile.next();
            pWord = infile.next();

            ((ArrayHandler)getApplicationContext()).info.add(new Information(accName, uName, pWord));

            for( int i = 0; i < ((ArrayHandler)getApplicationContext()).info.size(); i++)
            {

            }
        }
    }
    catch(Exception err)
    {
        Toast.makeText(getBaseContext(), "Could Not Read File", Toast.LENGTH_LONG).show();
    }

如果有其他更好的方法,请告诉我。此外,在实际使用应用程序之前不会创建此文件,因此它会先抛出错误,然后在 onDestroy() 发生并且用户重新加载它将读取它的信息之后。

编辑 很抱歉直到现在没有回复。但上面显示的方法实际上是 100% 有效的。因此,对于那些希望逐字读取文件并分配它们(如上)的人来说,此代码可以正常工作。

【问题讨论】:

  • 不确定您的实际目的是什么。请解释一下。你想完成什么?
  • 你的文字是用什么分隔的?逗号?
  • 你能不能只逐行阅读文件,然后逐字阅读你得到的每一行?您是否希望将帐户名、用户名和密码全部放在一条线上?如果是这种情况,那么我认为这将是一个简单的问题,即做一个 readline,然后用空格分割你得到的字符串并使用这些值的子字符串。或者您可以将它们放在文件中的单独行上,然后执行三个 readlines。就像阿卜杜勒说的,稍微澄清一下会有所帮助,除非我的假设是正确的。

标签: java android file-io java.util.scanner fileinputstream


【解决方案1】:

您可以逐行遍历并选择匹配模式的行(三个带空格的单词):

    Pattern p = Pattern.compile("(\\w+)\\s+(\\w+)\\s+(\\w+)");
    Scanner sc = null;
    try {
        sc = new Scanner(getAssets().open("test.txt"));
        while (sc.hasNextLine()){
            Matcher m  = p.matcher(sc.nextLine());
            if(m.find()){
                Log.i("TESTING","Account:"+m.group(1)+", User:"+m.group(2)+", Password:"+m.group(3));
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2011-12-23
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2010-09-24
    相关资源
    最近更新 更多