用Java替换文本文件的第一行

我有一个文本文件,我只想更改文件的第一行。 该文件可能是数百万行,所以我宁愿不必遍历所有内容,所以我想知道是否还有其他方法可以做到这一点。

我还想在第一行应用一些规则,以便用其他单词替换某些单词的实例。

这可能吗?

除非结果行的长度与原始行的长度不同,否则RandomAccessFile将执行此操作。

如果事实certificate你被迫执行一个副本(其中第一行被替换,其余数据将按原样复制),我建议使用BufferedReaderBufferedWriter 。 首先使用BufferedReaderreadLine()来读取第一行。 修改它并将其写入BufferedWriter 。 然后使用char[]数组执行文件其余部分的暴力复制。 这比逐行复制更有效。 如果您需要详细信息请告诉我..

另一种选择是在同一文件中执行读写操作。 但它会有点复杂。 :)如果您需要有关详细信息,请告诉我..

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

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

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

它很像InputStream和OutputStream,但它允许在任何你喜欢的地方读写。

只应用一次正则表达式。 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打开。 将第1行读入字符串然后应用更改,然后将字符串写回。

为什么不编写Perl脚本并使用Runtime.exec()调用它。 虽然不是纯粹的java解决方案。 深入了解本文之前http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html