1

我正在寻找在我的应用程序中读取文本文件,但我需要逐字阅读,而不是逐行阅读。我已经习惯了 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% 有效的。因此,对于那些希望逐字读取文件并分配它们(如上)的人来说,此代码可以正常工作。

4

1 回答 1

0

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

    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();
    }
于 2013-08-15T06:20:30.957 回答