2008-10-14 50 views
8

我有一个文本文件,我只想更改文件的第一行。该文件可能长达数百万行,所以我宁愿不必循环一切,所以我想知道是否有另一种方式来做到这一点。替换Java中的第一行文本文件

我还想将一些规则应用到第一行,以便用某些词替换某些词的实例。

这可能吗?

回答

15

A RandomAccessFile将做的伎俩,除非产生的线的长度不同于原始线的长度。

如果发现您被迫执行复制(第一行被替换,其余数据将被按原样复制),我建议使用BufferedReaderBufferedWriter。首先使用BufferedReaderreadLine()来阅读第一行。修改它并将其写入BufferedWriter。然后使用char[]阵列执行文件其余部分的蛮力副本。这将比逐行复制效率更高。让我知道如果你需要的细节..

另一种选择是执行读取和写入同一个文件。但它会更复杂一些。 :)让我知道你是否需要这方面的细节。

2

你想要一个RandomAccesssFile。使用该文件,您可以在文件中的任何位置读取和写入文件。

它非常类似于InputStream和OutputStream,但它允许您随时随地进行读写操作。

1

只应用一次正则表达式。 String.replaceFirst(“regex”,“replacementstring”):http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#replaceFirst(java.lang.String,%20java.lang.String)

将文件作为RandomAccessFile打开。将第一行读入字符串,然后应用更改,然后再写回字符串。

+0

仅当第1行的长度不变时 – Cheekysoft 2008-10-14 18:11:12

+0

“该文件可能长达数百万行” - 祝您好运,使用正则表达式! LOL – 2008-10-15 00:29:18

3

如果新行的字符数(字节)与原始第一行不同,则必须重新编写整个文件以消除间隙或避免覆盖第二行的一部分。

当然,各种工具如String.replaceFirst(String regex, String replacement)javadoc)或RandomAccessFilejavadoc)可以帮助您完成此任务。

相关问题