2012-03-14 98 views
0

我創建一個CSV文件,如下所示:lcsv文件的行替換

public class check 
{ 
public static void main(String [] args) 
{ 
    generateCsvFile("/RMT/test.csv"); 
} 

private static void generateCsvFile(String sFileName) 
{ 
try 
{ 
    FileWriter writer = new FileWriter(sFileName,false); 

    writer.write("DisplayName"); 
    writer.write(','); 
    writer.write("Age"); 
    writer.write('\n'); 

    writer.write("MKYONG"); 
    writer.write(','); 
    writer.write("26"); 

    writer.write("YOUR NAME"); 
    writer.write(','); 
    writer.write("29"); 

    writer.flush(); 
    writer.close(); 
} 
catch(IOException e) 
{ 
    e.printStackTrace(); 
} 
} 

在這裏,我寫在文件中的兩行,但是當我寫第二行我想替換第一行(頭)而不是追加它。我該怎麼做?有人能幫助我嗎?

+0

你爲什麼要這麼做? – beerbajay 2012-03-14 13:21:42

+0

實際上,在我的項目中,它需要打印讀取到csv文件的平均值,最大值,最小值字節......我將每10秒計算一次這些值......但最後我只想得到最終結果......所以我只是想每次都更換這條線,以便最終得到總平均值,最大值和最小值 – 2012-03-14 13:27:00

+1

爲什麼你不能在內存中進行計算並只寫入一次文件? – Kent 2012-03-14 13:33:06

回答

0

我會將csv數據讀入內存並進行計算,然後將結果寫入文件。

,如果它不會爲你工作,不知何故:

  • 你可以加載該文件,你要會寫,讀一號線(頭),然後追加新的計算數據集(在內存中) ,覆蓋文件。

  • 如果頭文件是固定文本,然後將其另存爲變量,則不需要從文件加載頭文件。

  • 如果你需要精確操作的文件,看看java.io.RandomAccessFile中

+0

我該如何覆蓋它? – 2012-03-14 13:56:25

+0

你保持文件打開並寫入,它不會覆蓋文件。你可以在每次寫作後關閉。或保持它打開並獲得偏移量,在偏移量處寫入新數據。那麼舊內容將被覆蓋。 – Kent 2012-03-14 14:05:08