<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Energy of Love  
    日歷
    <2009年8月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345
    統計
    • 隨筆 - 70
    • 文章 - 0
    • 評論 - 80
    • 引用 - 0

    導航

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    /**
     * 
    @author panhf2003
     * 
    @version 2008/09/05,
     
    */

    public class CsvFileUtil
    {
        
        
    /**
         * 構造,禁止實例化
         
    */
        
    private CsvFileUtil()
        {}
        
        
    public static void main(String[] args)
        {
            
    try
            {
                readCsvFile(
    "d:\\ZD_CUSTOMER_VIEW.csv");
            }
            
    catch (FileNotFoundException ex)
            {
                Logger.getLogger(CsvFileUtil.
    class.getName()).log(Level.SEVERE,
                        
    null, ex);
            }
            
    catch (IOException ex)
            {
                Logger.getLogger(CsvFileUtil.
    class.getName()).log(Level.SEVERE,
                        
    null, ex);
            }
        }
        
        
    /**
         * csv文件讀取<BR/> 讀取絕對路徑為argPath的csv文件數據,并以List返回。
         * 
         * 
    @param argPath
         *            csv文件絕對路徑
         * 
    @return csv文件數據(List<String[]>)
         * 
    @throws FileNotFoundException
         * 
    @throws IOException
         
    */
        
    public static List<String[]> readCsvFile(String argPath)
                
    throws FileNotFoundException, IOException
        {
            CsvFileUtil util 
    = new CsvFileUtil();
            File cvsFile 
    = new File(argPath);
            List
    <String[]> list = new ArrayList<String[]>();
            FileReader fileReader 
    = null;
            BufferedReader bufferedReader 
    = null;
            
    try
            {
                fileReader 
    = new FileReader(cvsFile);
                bufferedReader 
    = new BufferedReader(fileReader);
                String regExp 
    = util.getRegExp();
                
                String strLine 
    = "";
                String str 
    = "";
                
    while ((strLine = bufferedReader.readLine()) != null)
                {
                    Pattern pattern 
    = Pattern.compile(regExp);
                    Matcher matcher 
    = pattern.matcher(strLine);
                    List
    <String> listTemp = new ArrayList<String>();
                    
    while (matcher.find())
                    {
                        str 
    = matcher.group();
                        str 
    = str.trim();
                        
    if (str.endsWith(","))
                        {
                            str 
    = str.substring(0, str.length() - 1);
                            str 
    = str.trim();
                        }
                        
    if (str.startsWith("\"") && str.endsWith("\""))
                        {
                            str 
    = str.substring(1, str.length() - 1);
                            
    if (util.isExisted("\"\"", str))
                            {
                                str 
    = str.replaceAll("\"\"""\"");
                            }
                        }
                        
    if (!"".equals(str))
                        {
                            System.out.print(str 
    + " ");
                            listTemp.add(str);
                        }
                    }
                    
    // test
                    System.out.println();
                    list.add((String[]) listTemp
                            .toArray(
    new String[listTemp.size()]));
                }
            }
            
    catch (FileNotFoundException e)
            {
                
    throw e;
            }
            
    catch (IOException e)
            {
                
    throw e;
            }
            
    finally
            {
                
    try
                {
                    
    if (bufferedReader != null)
                    {
                        bufferedReader.close();
                    }
                    
    if (fileReader != null)
                    {
                        fileReader.close();
                    }
                }
                
    catch (IOException e)
                {
                    
    throw e;
                }
            }
            
    return list;
        }
        
        
    /**
         * csv文件做成<BR/> 將argList寫入argPath路徑下的argFileName文件里。
         * 
         * 
    @param argList
         *            要寫入csv文件的數據(List<String[]>)
         * 
    @param argPath
         *            csv文件路徑
         * 
    @param argFileName
         *            csv文件名
         * 
    @param isNewFile
         *            是否覆蓋原有文件
         * 
    @throws IOException
         * 
    @throws Exception
         
    */
        
    public static void writeCsvFile(List<String[]> argList, String argPath,
                String argFileName, 
    boolean isNewFile) throws IOException,
                Exception
        {
            CsvFileUtil util 
    = new CsvFileUtil();
            
    // 數據check
            if (argList == null || argList.size() == 0)
            {
                
    throw new Exception("沒有數據");
            }
            
    for (int i = 0; i < argList.size(); i++)
            {
                
    if (!(argList.get(i) instanceof String[]))
                {
                    
    throw new Exception("數據格式不對");
                }
            }
            FileWriter fileWriter 
    = null;
            BufferedWriter bufferedWriter 
    = null;
            String strFullFileName 
    = argPath;
            
    if (strFullFileName.lastIndexOf("\\"== (strFullFileName.length() - 1))
            {
                strFullFileName 
    += argFileName;
            }
            
    else
            {
                strFullFileName 
    += "\\" + argFileName;
            }
            File file 
    = new File(strFullFileName);
            
    // 文件路徑check
            if (!file.getParentFile().exists())
            {
                file.getParentFile().mkdirs();
            }
            
    try
            {
                
    if (isNewFile)
                {
                    
    // 覆蓋原有文件
                    fileWriter = new FileWriter(file);
                }
                
    else
                {
                    
    // 在原有文件上追加數據
                    fileWriter = new FileWriter(file, true);
                }
                bufferedWriter 
    = new BufferedWriter(fileWriter);
                
    for (int i = 0; i < argList.size(); i++)
                {
                    String[] strTemp 
    = (String[]) argList.get(i);
                    
    for (int j = 0; j < strTemp.length; j++)
                    {
                        
    if (util.isExisted("\"", strTemp[j]))
                        {
                            strTemp[j] 
    = strTemp[j].replaceAll("\"""\"\"");
                            bufferedWriter.write("\"" + strTemp[j] + "\"");
                        }
                        
    else if (util.isExisted(",", strTemp[j])
                                
    || util.isExisted("\n", strTemp[j])
                                
    || util.isExisted(" ", strTemp[j])
                                
    || util.isExisted("??", strTemp[j]))
                        {
                            bufferedWriter.write(
    "\"" + strTemp[j] + "\"");
                        }
                        
    else
                        {
                            bufferedWriter.write(strTemp[j]);
                        }
                        
    if (j < strTemp.length - 1)
                        {
                            bufferedWriter.write(
    ",");
                        }
                    }
                    bufferedWriter.newLine();
                }
            }
            
    catch (IOException e)
            {
                e.printStackTrace();
            }
            
    finally
            {
                
    try
                {
                    
    if (bufferedWriter != null)
                    {
                        bufferedWriter.close();
                    }
                    
    if (fileWriter != null)
                    {
                        fileWriter.close();
                    }
                }
                
    catch (IOException e)
                {
                    
    throw e;
                }
            }
        }
        
        
    /**
         * 
    @param argChar
         * 
    @param argStr
         * 
    @return
         
    */
        
    private boolean isExisted(String argChar, String argStr)
        {
            
            
    boolean blnReturnValue = false;
            
    if ((argStr.indexOf(argChar) >= 0)
                    
    && (argStr.indexOf(argChar) <= argStr.length()))
            {
                blnReturnValue 
    = true;
            }
            
    return blnReturnValue;
        }
        
        
    /**
         * 正則表達式。
         * 
         * 
    @return 匹配csv文件里最小單位的正則表達式。
         
    */
        
    private String getRegExp()
        {
            StringBuffer strRegExps 
    = new StringBuffer();
            strRegExps.append(
    "\"((");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*[,\\n  ])*(");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*\"{2})*)*");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*\"[  ]*,[  ]*");
            strRegExps.append("|");
            strRegExps.append(SPECIAL_CHAR_B);
            strRegExps.append(
    "*[  ]*,[  ]*");
            strRegExps.append(
    "|\"((");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*[,\\n  ])*(");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*\"{2})*)*");
            strRegExps.append(SPECIAL_CHAR_A);
            strRegExps.append(
    "*\"[  ]*");
            strRegExps.append("|");
            strRegExps.append(SPECIAL_CHAR_B);
            strRegExps.append(
    "*[  ]*");
            
    return strRegExps.toString();
        }
        
        
    private static final String SPECIAL_CHAR_A = "[^\",\\n  ]";
        
        
    private static final String SPECIAL_CHAR_B = "[^\",\\n]";
    }
    posted on 2009-08-10 21:21 不高興 閱讀(292) 評論(0)  編輯  收藏 所屬分類: Java
     
    Copyright © 不高興 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲精品无码久久久久APP| 亚洲乱色伦图片区小说| 一级毛片免费播放视频| 免费h黄肉动漫在线观看| 国产精品亚洲综合一区在线观看| 小小影视日本动漫观看免费| 亚洲av无码一区二区三区四区 | 亚欧色视频在线观看免费| 久久精品国产亚洲AV无码偷窥| 最近2019免费中文字幕6| 亚洲黄色免费网址| 19禁啪啪无遮挡免费网站| 亚洲国产综合在线| 性做久久久久久久免费看| 亚洲欧美成人一区二区三区| 国产成人免费全部网站| 一级a性色生活片久久无少妇一级婬片免费放 | 婷婷亚洲久悠悠色悠在线播放| 免费在线看黄网站| 亚洲精品午夜视频| 日韩精品视频免费观看| a高清免费毛片久久| 亚洲av日韩av无码| 日韩吃奶摸下AA片免费观看| 噜噜综合亚洲AV中文无码| 亚洲精品A在线观看| 久久午夜免费鲁丝片| 亚洲不卡视频在线观看| 午夜国产羞羞视频免费网站| 中文字幕免费在线看电影大全| 亚洲另类激情综合偷自拍| 啦啦啦www免费视频| j8又粗又长又硬又爽免费视频| 亚洲最新永久在线观看| 免费观看的毛片手机视频| 中文字幕在线观看免费| 亚洲一级黄色大片| 在线亚洲精品自拍| 丁香花免费高清视频完整版| 一级一片免费视频播放| 亚洲va精品中文字幕|