每行写入新的 CSV 文件 (JAVA)

2023-12-11

我有以下代码:

public static void main(String[] args) throws IOException {
        //File being read:
        String fileName = "src/data/Belgium.csv";


    String[] nextLine;

    try (CSVReader reader = new CSVReader(new FileReader(fileName), ',', '"', 1)) {


        while ((nextLine = reader.readNext()) != null) {

            for (String line : nextLine) {
                //NewFile
                //When 2nd parameter - ture, it gets so big, that excel can't handle it anymore...
                FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv", true);

                line = line.replaceAll("T", " ");
                line = line.replaceAll("Z", "");
                line = line.replaceAll("ActualGenerationPerUnit.mean", "");
                line = line.replaceAll("Plantname:", "");
                //Escaping curly braces is a must!
                line = line.replaceAll("\\{", "");
                line = line.replaceAll("\\}", "");

                writer.append(line);
                writer.flush();
                writer.close();

                System.out.println(line);
            }
        }System.out.println("Successfully written");
    }
}

我的控制台中的代码输出使用 System.out.println(line) 给出了正确的输出。 但是,当我打开 CSV 文件时,它看起来像是写反了。 Excel 首先抱怨行数。 但是,仅显示原始数据集的最后一行。 该数据集(以低效方式进行预处理)包含超过 1000 行。因此,我不能简单地附加每个条目。

有更好的方法吗?

非常欢迎提示和技巧。 此外,我尝试过几个作家: - CSV写入 - 缓冲写入器 - 文件编写器

还检查了 Stackoverflow 上的其他问题... 似乎无法使其发挥作用。谢谢你!

UPDATE:

问题得到解答!最终代码:

 public static void main(String[] args) throws IOException {
    //File being read:
    String fileName = "src/data/Belgium.csv";

    //When 2nd parameter - ture, it gets so big, that excel can't handle it anymore...
      FileWriter writer = new FileWriter("src/dataNew/BelgiumNew5.csv", true);


    String[] nextLine;

    try (CSVReader reader = new CSVReader(new FileReader(fileName), ',', '"', 1)) {

        while ((nextLine = reader.readNext()) != null) {

            for (String line : nextLine) {

                line = line.replaceAll("T", " ");
                line = line.replaceAll("Z", "");
                line = line.replaceAll("ActualGenerationPerUnit.mean", "");
                line = line.replaceAll("Plantname:", "");
                //Escaping curly braces is a must!
                line = line.replaceAll("\\{", "");
                line = line.replaceAll("\\}", "");

                writer.append(line);
                writer.append(System.lineSeparator());
                System.out.println(line);


            }
        }System.out.println("Successfully written");
        }catch(Exception e){
        e.printStackTrace();
    }finally {
        if (writer != null){
            writer.flush();
            writer.close();
        }
    }
}

但是,当我打开 CSV 文件时,它似乎是这样写的 颠倒了。 Excel 首先抱怨行数。然而, 仅显示原始数据集的最后一行。

我认为这可能是由于 CSV 行之间缺少换行符引起的。

实际上,当您在文件中写入一行时,您并没有写入新行字符。 你可以这样写:writer.append(System.lineSeparator())每读一行后。

作为旁注:

1)为什么不在循环之前移动它(否则效率较低):

FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv", true);

2)您不应该在每个读取行刷新并关闭文件,因为这样效率较低:

writer.append(line);
writer.flush();
writer.close();
System.out.println(line);

应该足够了:

writer.append(line);
System.out.println(line);

保留这一点:

writer.flush();
writer.close();

in a finally声明如:

FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv", true);

try{
  // all your operations to handle the file
}

catch(Exception e){
  // your exception handling
}

finally{
   if (writer!=null){
      writer.flush();
      writer.close();
   }
}

编辑回答评论:

如果您的印象是输出文件包含多组记录,则可能与该文件的追加模式有关。FileWriter你用过的。

替换:

FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv", true);

通过此不使用此模式:

FileWriter writer = new FileWriter("src/dataNew/BelgiumNew1.csv", false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每行写入新的 CSV 文件 (JAVA) 的相关文章

  • Java - 如何将特殊字符放入字符串中

    Java 似乎有很好的字符串处理能力 尽管如此 我还是遇到了最简单的问题 我需要动态字符串 它们在运行时更改 因此字符串类型不是一个好的选择 因为它们是不可变的 所以我使用字符数组 设置起来有点痛苦 但至少它们是可以修改的 我想创建一个字符
  • 将 Hibernate 对象序列化为 JSON 时抛出异常

    好吧 我正在使用 Hibernate 将一个小型数据库加载到一些表示表的类并与数据库交互 一切都很好 我真的可以看到所有结果 而且我没有任何空字段 所有这些都已被使用 这里我展示了 主 类 表 import javax persistenc
  • 使用 HttpUrlConnection Android 将 base64 编码的图像发送到服务器

    我正在尝试使用 HttpUrlConnection 将 base64 编码的图像发送到服务器 我遇到的问题是大多数图像均已成功发送 但有些图像会生成 FileNotFound 异常 我的图像编码代码可以在下面找到 public static
  • 在哪里可以获得有关 Java FitNesse 和 Slim 的一些教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 ChannelExec 的命令未执行 - Jsch

    我正在使用 Jsch 在服务器中创建一个文件并执行一些命令 对于文件创建 它工作正常 但是对于命令执行 则不然 它保持状态 1 仍在处理它 并永远保持该状态 这种情况发生在 shell 执行或我尝试成为 root 时 请按照以下方法操作 p
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 如何在 Eclipse 中使用其他外部 jar 依赖项创建不可运行/不可执行的 jar

    我无法通过 Eclipse 导出向导创建普通的 jar 不可运行 不可执行 它仅创建 jar 文件 但不会导出依赖的 jar 从而在从其他类调用导出的 jar 的方法时出现错误 请帮助 非常感谢 kurellajunior的建议 它是通过使
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 从 @JsonProperty 值获取枚举常量

    我有一个标有 JsonProperty 的枚举 用于使用 Jackson 进行 JSON 序列化 反序列化 并且希望获取给定字符串 JsonProperty 的枚举值 public enum TimeBucket JsonProperty
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何在Java媒体框架中学习.wav持续时间?

    我正在尝试使用 java 媒体框架将 mov 文件与 wav 文件合并 因此我需要知道它们的持续时间 我怎样才能做到这一点 任何想法 将不胜感激 您可以使用以下方式了解声音文件的持续时间 即 VitalyVal 的第二种方式 import
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • 为什么这个私人浮动字段变为零?

    我有一些奇怪的行为 我很难向自己解释 称为 textureScale 的浮点字段变为零 如果某些代码正在更改该值 则可以解释这一点 然而 我希望能够通过将其设置为 私有最终浮点 来导致构建失败 或者至少是运行时异常 那么无论更改该值都将失败
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • 为什么范围为“provided”的依赖项会隐藏 Maven 中的传递依赖项?

    我的 Maven 项目中有三个模块 这稍微简化了 model包含JPA注释的实体类 坚持实例化一个实体管理器并调用它的方法 应用创建类的实例model 设置一些值并将它们传递给坚持 model and 坚持显然取决于javax persis
  • 如何捕获 try-with-resource 语句中 close 方法抛出的异常

    我正在读关于try with resourceJava 中的语句可用于指定任意数量的资源 try Resource1 res1 initialize code Resource1 res2 initialize code statement

随机推荐

  • pyspark中指定多列数据类型更改为不同数据类型

    我有一个数据框 df 由50多个列和不同类型的数据类型组成 例如 df3 printSchema CtpJobId string nullable true TransformJobStateId string nullable true
  • 拒绝访问目录中的所有文件,除非特定的 php 页面是引荐来源网址

    我们将文件存储在 uploads downloads 目录中 可以通过 php 文件以以下方式访问这些文件https www example com request file php file 123 该 PHP 文件查询数据库表并返回存储
  • 在 ionic cordova 中使用 twitter 登录无法使用 $cordovaOauth.twitter

    我想使用 Cordova Oauth 插件集成 Twitter 登录以验证我的混合应用程序中的用户 遵循以下说明ngcordova oauth 演示步骤来自Here 因为回调 URI 必须指向 localhost callback 否则登录
  • 检测字体是否支持变体(如上标和下标)

    WPF 有版式 变体附加属性可让您执行上标和下标 但是 它仅适用于某些字体 对于其他字体 变体完全被忽略 文本正常显示 代码示例和屏幕截图here 由于它默默地退回到无操作状态 我不知道出了什么问题 但我的用户会看到糟糕的行为 有什么方法可
  • 如何在 VueJS 项目构建时使用环境变量

    我正在尝试在期间使用环境变量buildVueJS 应用程序的 CI 作业阶段 我正在使用 GitLab CI 可用的环境变量之一是CI COMMIT SHORT SHA build image node latest stage build
  • SQL:多次重复结果行,并对行进行编号

    我有一个 SQL 查询 结果如下 value count foo 1 bar 3 baz 2 现在我想扩展它 以便每一行都有一个count大于 1 的值出现多次 我还需要对这些行进行编号 所以我会得到 value count index f
  • 调用外部模块时多处理池速度缓慢

    我的脚本正在调用librosa用于计算短音频片段的梅尔频率倒谱系数 MFCC 的模块 加载音频后 我想尽快计算这些 以及其他一些音频功能 因此进行多重处理 问题 多处理变体比顺序处理慢得多 分析显示我的代码 90 以上的时间都花在
  • 如何搜索 sap.m.Tree 中的所有节点?

    我目前正在为我的公司开发 MasterDetail 应用程序 该应用程序提供以节点表示的可扩展类别 节点及其子节点与导航属性的绑定不是问题 但是 如果我想在上面的搜索字段中搜索某个组节点 它只会在四个最高节点之间进行过滤 它可以搜索第一层的
  • 使用 Javascript 将 xml POST 到 api

    我正在尝试发布 XML 数据 然后重定向到当前页面 但我似乎无法让它工作 当我这样做时
  • vscode:如何获取光标在文档中的偏移量?

    我正在开发 vscode 扩展 我想获取对整个文档的光标位置引用 例如 如果我有以下 html lt body gt div p Hello World p div 并且光标位于 body 标记内 在上面的代码中签名 如果从头开始计算文档中
  • Xcode:将数据从 iOS TextField 发送到远程数据库的最简单方法

    我目前在 HostGator com 上有一个在线网络托管 MySQL 数据库 该数据库当前存储我的服务的用户注册信息 目前 在该数据库中存储信息的唯一方法是通过网站上的在线表格 我的目标是通过使用文本字段等在 iOS 应用程序上复制该表单
  • 如何按创建日期顺序显示文件夹?

    我是 PHP 新手 正在开发一个名为 BaboonHut com 的项目 我正在用 PHP 对其进行编码 因为最好的学习方法就是深入研究 无论如何 对于这个问题 下面的代码片段当前获取所有文件夹的名称在某个位置并显示一些信息 但是这些项目当
  • DELETE 方法 .NET WebAPI 不起作用

    我已经看过大量关于此问题的帖子 但我的新 WebAPI 的 DELETE 方法根本不起作用 并且使用 Windows 7 32 位 IIS 7 5 返回 404 我试过了 卸载 WebDAV 将 PUT DELETE OPTIONS 添加到
  • 使用 Blob 在 JavaScript 中导出 Excel 在 FireFox 中不起作用

    我有一些 JavaScript 代码 如第一个代码片段所示 适用于最新的 Chrome 但不适用于最新的 FireFox 此代码将数据导出到xls使用 Blob 对象的文件 奇怪的是 在 FireFox 中 代码不会抛出任何错误 但不会执行
  • 如何将文件中的行转换为没有换行符的字符串?

    我正在使用 Python 3 循环遍历包含字符串的 txt 文件的行 这些字符串将在curl 命令中使用 但是 它仅适用于文件的最后一行 我相信其他行以换行符结尾 这会导致字符串丢失 url https with open file as
  • 读取 ID3 标签的最佳库是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 哪个库是目前最全面 功能最
  • Jupyter Notebooks 和 Papermill 辅助的 Airflow 中的 ETL

    所以我的问题是 我在 Airflow 中构建 ETL 管道 但首先在 Jupyter 笔记本中真正开发和测试提取 转换和加载功能 因此 我最终总是在 Airflow Python 操作员代码和 Jupyter 笔记本之间来回复制粘贴 效率非
  • Redux 不应该阻止重新渲染吗?

    我有一个List显示多个的组件Item成分 List从 Redux 存储获取其数据 当商店更新时 例如因为我删除了一个项目 所有Items 被重新渲染 这是为什么 我知道我可以使用shouldComponentUpdate 以防止新的渲染
  • NIB 文件中的静态表单元

    是否可以创建一个包含带有自定义静态单元格的表格视图的 nib 文件 我想创建一个包含所有静态内容的类似表单的表格视图 但我目前没有使用故事板 我能够在应用程序的默认情节提要中找到内容类型菜单 但我使用的是 Nib 当我创建 UIViewCo
  • 每行写入新的 CSV 文件 (JAVA)

    我有以下代码 public static void main String args throws IOException File being read String fileName src data Belgium csv Strin