如何使用Android Studio 2.1.3从Android中的文本文件获取随机行? [英] How to get a random line from text file in Android using Android Studio 2.1.3?

查看:184
本文介绍了如何使用Android Studio 2.1.3从Android中的文本文件获取随机行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个500行的文本文件.我将此文本文件放置在app/src/main/assets文件夹中,名称为"words.txt".在此文件中,每行均以换行符分隔.现在,我需要从此文本文件中获取随机行.在发布此信息之前,我访问了以下问题.

I have a text file with 500 lines. I placed this text file in app/src/main/assets folder with the name "words.txt". In this file each line is separated with line break. Now i need to get random line from this text file. I visited following questions prior to posting this.

如何从android?

InputStreamReader并从.txt文件中读取随机行

如何从文本文件中获取随机行并打印该行[重复]

如何获取随机Java中的文本文件的一行?

从android中的文本文件中读取随机行

我已经从上述链接以及一个链接构建了我的代码.我不知道是否存在称为行号读取器"的类.

I have constructed my code from above links as well as this one. I did not know that some class called line number reader exists.

这是我的代码:

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)始终读取第一行.为什么?

Now this code works but always gives the first line. The random number is generated but the lnr (LineNumberReader) reads first line always. Why?

这是出于学习目的.对于当前情况,我知道文件的长度(或总行数)为500.

This is for learning purpose. For current case i know the length of file (or total no of lines) are 500.

推荐答案

现在此代码有效,但始终给出第一行.随机数 生成,但lnr(LineNumberReader)始终读取第一行. 为什么?

Now this code works but always gives the first line. The random number is generated but the lnr (LineNumberReader) reads first line always. Why?

请参见 LineNumberReader

但是请注意,setLineNumber(int)实际上并不会改变流中的当前位置;只会更改getLineNumber()返回的值.

这就是为什么它总是读取第一行的原因.

So that's why it reading first line always.

这篇关于如何使用Android Studio 2.1.3从Android中的文本文件获取随机行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆