For 循环只返回最后一个值

时间:2021-05-01 22:54:26

标签: java for-loop printwriter

我正在编写一个程序,该程序使用 twitter4j 从用户时间线中获取大量推文,并将它们写入 CSV 文件。目前我的代码将所有推文返回到控制台,但只将最后一个值写入我的 .CSV 文件。我知道某个地方存在问题,因为在控制台中,每条推文后都会显示“完成”。

    Twitter twitter1 = TwitterFactory.getSingleton();
    List<Status> statuses = twitter1.getUserTimeline();
    System.out.println("Showing home timeline.");
    for (Status status : statuses) {
        System.out.println(status.getUser().getScreenName() + ":" +
                           status.getText());
            PrintWriter pw = new PrintWriter(new File("/Desktop/cwk/4104/tweets.csv"));
            StringBuilder sb = new StringBuilder ();
            
            sb.append("ID");
            sb.append(",");
            sb.append("UserId");
            sb.append(",");
            sb.append("Username");
            sb.append(",");
            sb.append("Name");
            sb.append(",");
            sb.append("Location");
            sb.append(",");
            sb.append("Tweet");
            sb.append("\n");
            
            
            for( int i = 0; i < 20; i++ ) {
            sb.append(1+i);
            sb.append(",");
            sb.append(status.getUser().getId());
            sb.append(",");
            sb.append(status.getUser().getScreenName());
            sb.append(",");
            sb.append(status.getUser().getName());
            sb.append(",");
            sb.append(status.getUser().getLocation());
            sb.append(",");
            sb.append(status.getText());
            sb.append("\n");
            
            }
            
            pw.write(sb.toString());
            pw.close();
            System.out.println("done");


        } 

0 个答案:

没有答案