日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Jsp常用功能CSV文件的生成與分析_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:JSPServletJSF自定義標簽
jsp自定義標簽的定義步驟: 創(chuàng)建標記處理器 創(chuàng)建TLD文件 編輯web.xml 在JSP頁面中使用此標簽 模板無憂 在此我們主要討論和學習的不是如何開發(fā)自定義標簽,所以具體的開發(fā)事例百度

CSV文件是指Excel可以識別的后綴名為CSV的文件,網(wǎng)站系統(tǒng)后臺用來存儲分析數(shù)據(jù)的時候有可能會用到它。其實CSV文件的讀取和做成比較簡單,主要的技術(shù)點是文件的讀寫。不過CSV文件的分析和生成有一定的代表性,可以通過對CSV文件的生成和分析的實現(xiàn),來了解后臺處理批量數(shù)據(jù)的簡單思路。

打開Excel,新建一個文件,在里面隨便輸入一些數(shù)據(jù),然后另存為一個CSV文件,再次用Excel打開的時候,發(fā)現(xiàn)只有一個sheet。用一個記事本打開這個文件,可以看到類似如下的數(shù)據(jù)。
aaa,bbb,ccc,ddd
aaa2,bbb2,,ddd2
aaa3,bbb3,ccc3,
aaa4,bbb4,ccc4,ddd4

仔細觀察數(shù)據(jù),可以確定以下幾點:

  1. CSV文件是文本型文件(非二進制)
  2. 文件中的一行在Excel中顯示的一行
  3. 同一行中的數(shù)據(jù)用半角逗號分隔

發(fā)現(xiàn)以上的規(guī)律,我們可以自己也生成一個CSV文件。也可以簡單的分析CSV文件。
現(xiàn)在給CSV文件的生成和分析寫個簡單的例子。(如果對文件處理類不熟悉,可以看一下java的文件處理,或者看一下JDK中關(guān)于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文件的內(nèi)容。

至此,CSV文件的生成與分析其實已經(jīng)完成。如果要寫適合自己需要的CSV文件分析類,完全可以根據(jù)自己的業(yè)務(wù)邏輯和需要來自己實現(xiàn)。因為CSV文件的分析確實很簡單。

不過上面的程序還是存在一些問題的。這些問題在開發(fā)的過程中應(yīng)當注意,不然可能出現(xiàn)致命的錯誤。

  1. 比較2個類中對資源的釋放問題。CSV生成類中FileWriter對象的關(guān)閉(close()方法)是在try中執(zhí)行的。而CSV分析類中InputStreamReader,BufferedReader對象的關(guān)閉(close()方法)是在finally中執(zhí)行的。CSV生成類是錯誤的。因為在文件和流的生成過程中,是有可能產(chǎn)生IO異常的,如果在對象close前發(fā)生IO異常,那么close方法永遠不會被調(diào)用,這樣資源不會及時釋放,會產(chǎn)生致命錯誤的。而在finally中的程序,是一定會被執(zhí)行的語句,所以即使操作中途發(fā)生問題,也會在最后執(zhí)行close方法。(try-catch-finally是java語法中基本而重要的部分,不熟悉的可查閱相關(guān)資料。)
  2. 在CSV文件的操作過程中,我們是按照半角逗號來分隔數(shù)據(jù)的,如果某個數(shù)據(jù)中正好有半角逗號,那么數(shù)據(jù)不是出錯了?
  3. 如果分析的數(shù)據(jù)有全角字符,是否能夠正確分析。(亂碼問題)
    以上的第二個問題時必須考慮的。在寫一個類的時候,不要相信這個類要操作的數(shù)據(jù)或者得到的數(shù)據(jù)是好數(shù)據(jù)(完全符合要求的正確的數(shù)據(jù)),寫好的一個類用完全正確的數(shù)據(jù)測試完,很有可能一個小小的數(shù)據(jù)錯誤的問題,就有可能導致程序處理崩潰。所以,細節(jié)問題要充分考慮并對應(yīng)到,使自己編寫的類具有一定的健壯性。

分享:Jsp常用技巧圖片驗證碼
思路: 圖片驗證碼的實現(xiàn)主要的技術(shù)點是如何生成一個圖片。生成圖片可以使用java.awt包下的類來實現(xiàn)。我們先寫一個簡單的生成圖片的程序HelloImage.java。以下是代碼部分。 package

共3頁上一頁123下一頁
來源:模板無憂//所屬分類:JSP教程/更新時間:2008-08-22
相關(guān)JSP教程