java - 将 .txt 文件转换为一个 .csv。导出的信息会覆盖第一行。有小费吗?
问题描述
我一直在做一个项目,从多个 .txt 文件中读取数据以将其转换为 .csv 文件。我的问题是导出的数据一直覆盖第一行,所以每次我导出文件时它只显示最后一行。有没有人有任何提示可以帮助我?
//Reading the information from the files.
for (String fileName : textFileNames) {
try (Scanner sc = new Scanner(new File(stack + "\\" + fileName));) {
fileIn = sc.nextLine();
while (fileIn != null) {
String line = fileIn;
String[] split = line.split("\\s+");
StringJoiner joiner = new StringJoiner(",");
for (String strVal : split) {
joiner.add(strVal);
}
line = joiner.toString();
line = line.startsWith(",") ? line.substring(1) : line;
System.out.println(line);
BufferedWriter br = new BufferedWriter(new FileWriter("myfile.csv"));
StringBuilder sb = new StringBuilder();
// Append strings from array
sb.append(line);
sb.append("\n");
br.write(sb.toString());
br.close();
fileIn = sc.nextLine();
}
sc.close();
} catch (IOException ex) {
Logger.getLogger(Class_Organizer_Krause.class.getName())
.log(Level.SEVERE, null, ex);
}
}
解决方案
您BufferedWriter
在 while 循环内重新创建,基本上每次循环到输入文件中的新行时都会重新创建文件。
将 BufferedWriter 的构造移出 while 循环(就在它之前),将 close 语句移到 while 循环之后,它应该没问题。
推荐阅读
- r - 在ggplot2中旋转标签注释
- flutter - Flutter 项目助手脚本/别名(如 package.json “scripts”)
- python - 检查字典值中是否存在值
- javascript - moment.locale 添加额外的一天
- amazon-web-services - 我应该将死信队列和/或消息组 ID 添加到我的 AWS SQS FIFO 队列吗?
- node.js - 将 AWS destroy lambda arn 层添加到 Lamda Docker Image
- html - 当 dir=rtl 时,离子后退按钮不会改变方向,直到在 ionic 5 中重新渲染
- kubernetes - Bitnami Redis 关于 Kubernetes 身份验证失败与现有密钥
- javascript - 如何通过使用js单击转义按钮来关闭模式弹出窗口
- amazon-web-services - AWS Auto Scaling 缩减实例的速度太慢?