2008-10-14 109 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)可以幫助您完成此任務。