我有一个 500 行的文本文件。我将此文本文件放置在 app/src/main/assets 文件夹中,名称为“words.txt”。在此文件中,每一行都用换行符分隔。现在我需要从这个文本文件中获取随机行。在发布此内容之前,我访问了以下问题。
如何从android中的文本文件加载随机行? https://stackoverflow.com/questions/18157298/how-to-load-random-line-from-text-file-in-android
InputStreamReader 并从 .txt 文件中读取随机行 https://stackoverflow.com/questions/8704794/inputstreamreader-and-reading-random-lines-from-txt-file
如何从文本文件中抓取随机行并打印该行[重复] https://stackoverflow.com/questions/30465507/how-to-grab-a-random-line-from-a-text-file-and-print-the-line
如何在Java中获取文本文件的随机行? https://stackoverflow.com/questions/2218005/how-to-get-a-random-line-of-a-text-file-in-java
从android中的文本文件中读取随机行 https://thenewboston.com/forum/topic.php?id=2236
我已经从上面的链接构建了我的代码以及this https://stackoverflow.com/questions/4785628/java-random-line-read一。我不知道存在一些名为行号阅读器的类。
这是我的代码:
try {
//Initialize assetmanager class
AssetManager am = this.getAssets();
//open file using asset manager
InputStream is = am.open("words.txt");
//read buffer manager
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
//Important: use of LineNumberReader Class
LineNumberReader lnr = new LineNumberReader(reader);
Random r = new Random();
int n = r.nextInt(500)+1;
lnr.setLineNumber(n);
mWord = lnr.readLine();
Log.d("MyLog","The letter is "+mWord);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
现在这段代码可以工作,但总是给出第一行。生成随机数,但 lnr (LineNumberReader) 始终读取第一行。为什么?
这是出于学习目的。对于当前情况,我知道文件长度(或总行数)是 500。