如何使用FileOutputStream和PrintWriter按指定格式写入Artical数据到文件
Java商品类CSV格式化写入实现方案
针对你需要将Artical实例按指定分号分隔格式逐行写入baza.csv的需求,直接在实体类中统一封装格式化逻辑即可,后续控制台展示、文件写入都可以复用这套规则,避免重复编码。
实现步骤
- 在
Artical类中新增专门的CSV行格式化方法,统一处理字段格式转换和拼接:
public String toCsvRow() { // 处理价格:固定保留两位小数,匹配示例中的价格格式 String formattedPrice = String.format("%.2f", this.priceOfArtical); // 名称格式适配:你给出的示例中"LG Monitor"输出为"Monitor LG",如果需要调换空格分隔的名称前后段顺序就保留以下逻辑,不需要的话直接将outputName赋值为this.nameOfArtical即可 String[] nameParts = this.nameOfArtical.split(" ", 2); String outputName = nameParts.length == 2 ? nameParts[1] + " " + nameParts[0] : this.nameOfArtical; // 按要求用分号拼接字段,末尾补分号和换行符,保证每行对应一条商品数据 return String.join("; ", this.codeOfArtical, outputName, formattedPrice) + ";\n"; }
- 在
WriteArticalInFileClass的do()方法实现中,直接调用传入的Artical实例的toCsvRow()方法,拿到格式化完成的整行字符串写入目标文件即可。如果需要批量写入多条商品数据,每个实例依次调用该方法,将返回值追加到文件输出流中即可,会自动按行拆分,不会出现格式混乱。 ShowArticalClass的do()方法如果需要输出相同格式的商品信息,也可以直接调用toCsvRow()方法打印内容,后续如果要调整输出格式,只需要修改这一处方法的逻辑,不用分别改动展示和文件写入的代码。
提示:如果业务上不需要调整商品名的词语顺序,直接删除名称拆分的代码段,将
outputName替换为this.nameOfArtical,输出的商品名就会和你初始化时传入的参数完全一致。
内容的提问来源于stack exchange,提问作者pegasus
相关产品推荐
相关产品推荐

