2014-10-18 73 views
1

我需要讀取一個csv文件,以便使用java對它進行一些計算。我使用Scanner來讀取它,但是我想在第一行(即,在標題行之後)開始閱讀它,現在我只是在執行:while(inputStream.hasNext())來讀取所有內容,我應該這樣做,不要採取標題行?如何使用掃描儀讀取csv時不讀取標題行?

+2

只要得到第一行,然後忽略它。在循環之外這樣做,它應該起作用。 – Pokechu22 2014-10-18 23:54:06

+0

既然這是一個CSV文件,爲什麼不使用OpenCSV呢? – fge 2014-10-19 00:09:05

回答

1

你可以做一個額外的scan.nextLine();外的讀數環路您不使用返回值:

Scanner scan = new Scanner(new File("C:\\input.txt")); 
if (scan.hasNext()) { 
    // skip header line 
    scan.nextLine(); 
} 

// write contents to output file 
FileWriter fw = new FileWriter("C:\\output.txt"); 

// read the rest of the file 
while (scan.hasNext()) { 
    fw.write(scan.nextLine() + System.getProperty("line.separator")); 
} 

scan.close(); 
fw.close(); 

編輯:添加的代碼對於非頭內容寫入到輸出文件。如果需要,請隨意在您的scanfw參考文獻中添加一些null檢查。

+0

嗨,非常感謝!另外,你能告訴我如何不輸出輸出,我可以將它寫入另一個文件,如output.csv? – 2014-10-19 00:15:47

+0

我的意思是,就像我必須從一列中找到最小值,最大值和平均值,並將其作爲不同列以Min,Max,Average作爲這些列的標題名稱輸出到output.csv。怎麼做? – 2014-10-19 00:58:25

+0

現在,如果我只是這樣做:fw.write(min + System.getProperty(「,」)); fw.write(max + System.getProperty(「,」));在while循環之後,我在output.csv文件中得到以下內容:0.03null0.26null(0.03是最小值,最大值是0.26) – 2014-10-19 01:00:34