CSV文件是指Excel可以識別的后綴名為CSV的文件,網站系統后臺用來存儲分析數據的時候有可能會用到它。其實CSV文件的讀取和做成比較簡單,主要的技術點是文件的讀寫。不過CSV文件的分析和生成有一定的代表性,可以通過對CSV文件的生成和分析的實現,來了解后臺處理批量數據的簡單思路。
打開Excel,新建一個文件,在里面隨便輸入一些數據,然后另存為一個CSV文件,再次用Excel打開的時候,發現只有一個sheet。用一個記事本打開這個文件,可以看到類似如下的數據。
aaa,bbb,ccc,ddd
aaa2,bbb2,,ddd2
aaa3,bbb3,ccc3,
aaa4,bbb4,ccc4,ddd4
仔細觀察數據,可以確定以下幾點:
發現以上的規律,我們可以自己也生成一個CSV文件。也可以簡單的分析CSV文件。
現在給CSV文件的生成和分析寫個簡單的例子。(如果對文件處理類不熟悉,可以看一下java的文件處理,或者看一下JDK中關于java.io.File類的幫助信息)
生成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();
}
}
}
這個類編譯后運行,可以看到在C盤根目錄下生成了一個名字為helloCsv.csv的CSV文件,雙擊打開,如下的樣子。
分析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文件讀取并分析。編譯后運行,正常情況下,可以看到剛才生成的CSV文件的內容。
至此,CSV文件的生成與分析其實已經完成。如果要寫適合自己需要的CSV文件分析類,完全可以根據自己的業務邏輯和需要來自己實現。因為CSV文件的分析確實很簡單。
不過上面的程序還是存在一些問題的。這些問題在開發的過程中應當注意,不然可能出現致命的錯誤。
新聞熱點
疑難解答