如何将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
相关产品推荐
相关产品推荐

