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

时间:2008-10-14 17:52:17

标签: java

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

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

这可能吗?

6 个答案:

答案 0 :(得分:16)

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

如果事实证明你被迫执行副本(第一行被替换,其余数据按原样复制),我建议使用BufferedReaderBufferedWriter 。首先使用BufferedReader的{​​{1}}来读取第一行。修改它并将其写入readLine()。然后使用BufferedWriter数组执行文件其余部分的强制复制。这比逐行复制更有效。如果您需要详细信息,请告诉我。

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分: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打开。将第1行读入字符串然后应用更改,然后将字符串写回。

答案 4 :(得分:0)

%USERPROFILE%\AppData\Roaming\npm

答案 5 :(得分:-5)

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

之前看一下这篇文章