我想在我的应用程序中读取文本文件,但我需要逐字逐句而不是逐行阅读。我已经习惯了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%工作。因此,对于那些希望逐字阅读文件并分配它们的人(如上所述),这段代码可以毫无问题地工作。
答案 0 :(得分: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();
}