文件直到最后才被读取

时间:2016-05-20 20:39:28

标签: java android arraylist

我是Android Development和Java的新手。请耐心等待。

所以,我正在创建一个从网页列表中打开随机网页的应用程序 代码读取包含所有链接的assets文件夹中的文本文件,并生成链接列表,然后随机选择一个。

所以问题是我已经输入了日志消息,检查程序是否正在读取并填充数组,直到文本的最后一行。

日志消息将列表大小显示为1301.而我的文本文件包含2601个链接。 我似乎无法理解我哪里出错了。

这是java代码片段,

    int sd=0;
    List<String> links=new ArrayList<>();
    try {
        AssetManager assetManager = getAssets();
        InputStream assetIn = assetManager.open("android");
        BufferedReader r = new BufferedReader(new InputStreamReader(assetIn));
        while (r.readLine() != null) {
            links.add(r.readLine());
            sd++;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
        Random r=new Random();
        //String len= Integer.toString(links.size());

        String len= Integer.toString(sd);
        Log.i("total loop",len);
        String randomLink=links.get(r.nextInt(links.size()));
        Log.i("link select :",randomLink);
        webView.loadUrl(randomLink);

2 个答案:

答案 0 :(得分:2)

您正在调用.statement{ position:relative; top:50%; transform: translateY(-50%); } #canvas{ width:100%; height:100%; } 两次,因此在每次迭代时读取2行而不是1行:

readLine()

您可能想要使用:

while (r.readLine() != null) { // reads a line
    links.add(r.readLine()); // reads another line
    sd++; // increments by 1 every *2* lines read
}

答案 1 :(得分:2)

你两次读取循环,在这里:

1)while (r.readLine() != null) { 2)links.add(r.readLine());

所以它应该是:

    String line = "";
    while ((line = r.readLine()) != null) {
        links.add(line);
        sd++;
    }