2014-10-18 66 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