Java,读取文件内容到arraylist

标签 java

我正在将文件内容读取到 ArrayList,以便稍后可以操作数据。但是当我尝试打印到控制台时,内容会重复显示。我在线希望能够打印这五行。如何调整代码,以便当我在控制台上显示时,它只能显示五行并重复显示结果?在我的文件中

3456
1678
4354
2384
5634

阅读列表并显示到控制台后,结果是

3456
3456
1678
3456
1678
4354
3456
1678
4354
2384
3456
1678
4354
2384
5634

我只想显示五行。

3456
1678
4354
2384
5634

代码:

public void testread(){
    System.out.println("Enter filename:\n");
    String filename=Keyboard.readInput();
    File myfile=new File(filename);
    try (BufferedReader scanfile=new BufferedReader(new FileReader(myfile))) {
        String str;
        List<String>list=new ArrayList<String>();

        while ((str=scanfile.readLine())!=null) {
            int i;
            list.add(str);

            for (i=0; i<list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    } catch (IOException e) {
        System.out.println("Error reading from file " + e.getMessage());
    }
}

最佳答案

您需要将 print for 循环移出 while 循环。 while 循环的每次迭代都会打印列表中的每个值。就像这样:

public void testread(){

    System.out.println("Enter filename:\n");
    String filename=Keyboard.readInput();
    File myfile=new File(filename);
    try(BufferedReader scanfile=new BufferedReader(new FileReader(myfile))){
        String str;
        List<String>
        list=new ArrayList<String>();
        while((str=scanfile.readLine())!=null)
        {
            int i;
            list.add(str);
        }
        // then print the list
        for(i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }
    }catch (IOException e){
        // Print error in case of failure.
        System.out.println("Error reading from file " + e.getMessage());
    }
}

关于Java,读取文件内容到arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55817230/

相关文章:

java - 运行多个方法时 Jersey 测试地址已被使用

java - 尝试布局 JPanel。每次运行时Java程序布局都会改变

java - 如何使 jdbc mysql 数据库连接生效

java - e(fx)clipse - 教程 2 - 步骤 18 - 无法生成更新站点

java - 默认构造函数在此场景中的意义

java - 解决java中的空字符串

java - Spring MVC,如果路径变量中存在正斜杠符号,模式将无法正常工作

java - 向上一个 fragment 发送消息

java - Hibernate @Filter实体通过@ManyToOne字段

java - 绑定(bind)java库Xamarin.Android