CSV文件是指Excel可以識(shí)別的后綴名為CSV的文件,網(wǎng)站系統(tǒng)后臺(tái)用來(lái)存儲(chǔ)分析數(shù)據(jù)的時(shí)候有可能會(huì)用到它。其實(shí)CSV文件的讀取和做成比較簡(jiǎn)單,主要的技術(shù)點(diǎn)是文件的讀寫(xiě)。不過(guò)CSV文件的分析和生成有一定的代表性,可以通過(guò)對(duì)CSV文件的生成和分析的實(shí)現(xiàn),來(lái)了解后臺(tái)處理批量數(shù)據(jù)的簡(jiǎn)單思路。
打開(kāi)Excel,新建一個(gè)文件,在里面隨便輸入一些數(shù)據(jù),然后另存為一個(gè)CSV文件,再次用Excel打開(kāi)的時(shí)候,發(fā)現(xiàn)只有一個(gè)sheet。用一個(gè)記事本打開(kāi)這個(gè)文件,可以看到類(lèi)似如下的數(shù)據(jù)。
aaa,bbb,ccc,ddd
aaa2,bbb2,,ddd2
aaa3,bbb3,ccc3,
aaa4,bbb4,ccc4,ddd4
仔細(xì)觀察數(shù)據(jù),可以確定以下幾點(diǎn):
發(fā)現(xiàn)以上的規(guī)律,我們可以自己也生成一個(gè)CSV文件。也可以簡(jiǎn)單的分析CSV文件。
現(xiàn)在給CSV文件的生成和分析寫(xiě)個(gè)簡(jiǎn)單的例子。(如果對(duì)文件處理類(lèi)不熟悉,可以看一下java的文件處理,或者看一下JDK中關(guān)于java.io.File類(lèi)的幫助信息)
生成CSV文件。(HelloCsvCreater.java)
package com.vogoal.test;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author SinNeR
*
* create a CSV file
*/
public class HelloCsvCreater {
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("C://helloCsv.csv");
fw.write("aaa,bbb,ccc,ddd,eee,fff,ggg,hhh/r/n");
fw.write("aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1/r/n");
fw.write("aaa/r/n");
fw.write("aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2/r/n");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
這個(gè)類(lèi)編譯后運(yùn)行,可以看到在C盤(pán)根目錄下生成了一個(gè)名字為helloCsv.csv的CSV文件,雙擊打開(kāi),如下的樣子。
分析CSV文件
package com.vogoal.test;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* @author SinNeR
*
* analysis a CSV file
*/
public class HelloCSVAnalysis {
public static void main(String[] args) {
InputStreamReader fr = null;
BufferedReader br = null;
try {
fr = new InputStreamReader(new FileInputStream(
"C://helloCsv.csv"));
br = new BufferedReader(fr);
String rec = null;
String[] argsArr = null;
while ((rec = br.readLine()) != null) {
System.out.println(rec);
argsArr = rec.split(",");
for (int i = 0; i < argsArr.length; i ) {
System.out.println("num " (i 1) ":" argsArr[i]);
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
if ( fr != null )
fr.close();
if ( br != null )
br.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
這里將剛才生成的csv文件讀取并分析。編譯后運(yùn)行,正常情況下,可以看到剛才生成的CSV文件的內(nèi)容。
至此,CSV文件的生成與分析其實(shí)已經(jīng)完成。如果要寫(xiě)適合自己需要的CSV文件分析類(lèi),完全可以根據(jù)自己的業(yè)務(wù)邏輯和需要來(lái)自己實(shí)現(xiàn)。因?yàn)镃SV文件的分析確實(shí)很簡(jiǎn)單。
不過(guò)上面的程序還是存在一些問(wèn)題的。這些問(wèn)題在開(kāi)發(fā)的過(guò)程中應(yīng)當(dāng)注意,不然可能出現(xiàn)致命的錯(cuò)誤。
新聞熱點(diǎn)
疑難解答
圖片精選