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

行ごとにトラバースして、パターン (スペースを含む 3 つの単語) に一致する行を選択できます。

    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 に答える