【问题标题】:Delete a row from a .cvs file?从 .csv 文件中删除一行?
【发布时间】:2020-07-18 14:04:17
【问题描述】:

我有一个大文件,需要从中删除特定行。我有要删除的确切行号,但我找不到直接转到该行并删除它的方法的解决方案。

StackOverflow 中的大多数答案只是建议遍历整个文件并将其复制到临时文件中,当找到目标行时,根本不包含它,交换文件名并删除。

这似乎不是一个非常有效的解决方案,尤其是对于大文件来说,它让我不得不使用它。还有其他不采用这种方法的想法吗?

【问题讨论】:

  • 请分享并发布链接Most answers。我怀疑缓冲方法是否有任何更直接的替代方法(将整个文件读入缓冲区,剪下行并将缓冲区再次写入文件)。

标签: java file io


【解决方案1】:

其他 stackoverflow 文件所建议的不仅仅是有效的解决方案。这是一个非常有效的解决方案。

您能做的最好的事情就是分配一个与您的内存允许的一样大的缓冲区。阅读行前的所有内容,行后的所有内容。合并到一个新文件中。

创建文件时,它不只是创建文件名。操作系统也会分配文件占用的空间,如果我们假设我们按照你说的那样做的话。有效地从文件中删除一行这意味着缩小分配的空间。您认为这是如何实现的?通过分配新的内存块。

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2022-01-16
    • 2018-08-15
    • 1970-01-01
    • 2017-01-23
    相关资源
    最近更新 更多