Java如何将for循环生成的随机数据输出为CSV文件?
Java生成CSV文件实现方案
核心思路
- 采用JDK自带的
BufferedWriter实现文件写入,无需引入第三方依赖,适配你现有代码的改造成本极低 - 使用try-with-resources语法自动管理文件流,不需要手动关流,避免资源泄漏
- 原有循环的逻辑完全不用改,仅需把控制台打印的内容替换为写入文件流的操作即可,还可以按需补充CSV表头行
改后完整代码
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class ItemID extends getRandom { public static void main(String[] args) { // 指定输出的CSV文件路径,默认生成在项目根目录 String csvFilePath = "items.csv"; // 自动关流的写法,不需要手动调用close方法 try (BufferedWriter writer = new BufferedWriter(new FileWriter(csvFilePath))) { // 可选:写入CSV表头,方便后续读取识别字段 writer.write("I_IM_ID,I_NAME,I_PRICE,I_DATA"); writer.newLine(); int I_IM_ID; //取值范围1 - 10000 double I_PRICE; //取值范围1.00 - 100.00 String I_NAME, I_DATA; //I_NAME为14-24位随机字符串;I_DATA为26-50位字符串 for(int i = 0; i < 10; i++) { I_IM_ID = getRandomInteger(1,10000); I_PRICE = getRandomDouble(1,100); I_NAME = getAlphaNumericString(28); I_DATA = getAlphaNumericString(28); // 原来的控制台打印替换为写入文件 String line = I_IM_ID +","+ I_NAME +","+ I_PRICE +","+I_DATA; writer.write(line); writer.newLine(); // 保留控制台打印也可以,方便调试 System.out.println(line); } System.out.println("CSV文件生成成功,路径:" + csvFilePath); } catch (IOException e) { System.err.println("文件写入失败:" + e.getMessage()); e.printStackTrace(); } } }
注意事项
- 如果你的随机生成字符串可能包含逗号、双引号特殊字符,需要给字段值套双引号转义,避免CSV格式错乱,示例写法:
String line = I_IM_ID +",\""+ I_NAME +"\","+ I_PRICE +",\""+I_DATA + "\""; - 想要自定义文件保存位置,直接把
csvFilePath的值改成绝对路径即可,比如Windows下写"D:\\data\\test.csv",Linux/macOS下写"/Users/xxx/Documents/items.csv"
内容的提问来源于stack exchange,提问作者Cole Lee
相关产品推荐
相关产品推荐

