You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Java程序提取的数字结果写入CSV文件

代码存在的问题

  • 缺少必要的导入包:java.io.FileWriter、java.io.IOException,且com.opencsv.CSVWriter导入语句末尾缺少分号
  • CSVWriter实例化语句拼写错误,错误写为CSV writer writer=new CSV writer(outputfile),正确应为CSVWriter writer = new CSVWriter(outputfile)
  • 变量名拼写错误:向列表添加元素时写的是ouput.add(),实际定义的列表名为output
  • 没有调用CSVWriter的写入方法把收集到的数字写入CSV,也没有处理写入后的缓存刷入、资源关闭逻辑
  • 异常捕获范围不全,只捕获了FileNotFoundException,缺少文件写入相关的IOException捕获

修正后完整代码

import java.io.File; 
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import com.opencsv.CSVWriter;

public class Test{
    public static void main(String[] args) {
        CSVWriter writer = null;
        Scanner myReader = null;
        try {
            File file = new File("getnumbers.csv");
            FileWriter outputfile = new FileWriter(file);
            writer = new CSVWriter(outputfile);
            
            List<String> output = new ArrayList<String>();
            String lookfor = "Success :: status 200 Created link on ".toLowerCase();
            System.out.println(lookfor);
            File myObj = new File("test1.txt");

            myReader = new Scanner(myObj);
            while (myReader.hasNextLine()) {
                String data = myReader.nextLine();
                if(data.toLowerCase().contains(lookfor)){
                    output.add(data.toLowerCase().split(lookfor)[1].trim().split(" ")[0]);
                }
            }
            
            // 写入CSV,每个数字单独占一行
            for(String t : output) {
                writer.writeNext(new String[]{t});
                System.out.println(t);
            }
            // 强制将缓存内容写入文件
            writer.flush();
            
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 统一关闭所有资源
            try {
                if(myReader != null) myReader.close();
                if(writer != null) writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

补充说明

如果你需要把所有数字放在同一行的不同列,只需要把写入逻辑调整为将output列表整体转为String数组,调用一次writeNext即可。

内容的提问来源于stack exchange,提问作者Namrata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:27:03