Java学习-015-CSV 文件写入实例源代码

在日常的自动化测试脚本编写的过程中,有时要将获取的测试结果或者测试数据存放在数据文件中,以用作后续的参数化测试。常用的文件文件类型无非 txt、csv、xls、properties、xml 这五种文件类型,前文已讲述过了txt文件相关的读写操作(),此文主要讲述 CSV 文件的写入操作。此文中 CSV 文件的写入方法和最终的测试方法,各位小主们在实际参考应用时,需要进行相应的修改(例如文件路径等)才可。若有不足之处,敬请各位大神告知,不胜感激!

闲话少述,小二上码勒

CSV文件写入方法源码如下所示,敬请参阅!

 1     /**
 2      * @function 文件写入: CSV文件
 3      * 
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java csvWrite, 2014-11-25 15:58:20 Exp $
 6      * 
 7      * @param filename  : CSV文件名
 8      * @param delimiter : CSV文件分隔符
 9      * @param encoding  : CSV文件编码格式
10      * @param csvdata   : CSV文件内容, 二维数组
11      * 
12      * @return boolean
13      */
14     public boolean csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata){
15         boolean success = false;
16         
17         /* csv写对象 */
18         CsvWriter csvwriter = null;
19         
20         /* 参数校验: 为null或空字符串时, 抛出参数非法异常 */
21         if (filename == null || "".equals(filename) || !assertFileType(filename, "CSV")) {
22             throw new IllegalArgumentException();
23         }
24         
25         /* 分隔符默认处理, 若分割符号为空, 则默认 ‘,’ */
26         if ("".equals(delimiter)) {
27             delimiter = ',';
28         }
29         
30         /* 参数校验: 编码格式是否在格式范围内 */
31         if(!this.constantslist.ENCODING_TYPE.contains(encoding)){
32             this.message = "参数非法:第三个参数{CSV编码}非法, 编码格式{" + encoding + "}不在CSV文件编码列表[" + this.constantslist.ENCODING_TYPE.toString() + "]中, 不支持!";
33             this.logger.error(this.message);
34             
35             throw new UnsupportedCharsetException(this.message);
36         }
37         
38         try {
39             // delete file
40             this.deleteFile(filename);
41             
42             csvwriter = new CsvWriter(filename, delimiter, Charset.forName(encoding));
43             
44             /* 数据写入 */
45             for (String[] rowdata : csvdata) {
46                 csvwriter.writeRecord(rowdata);
47             }
48             
49             csvwriter.close();
50             
51             success = true;
52         } catch (IOException ioe) {
53             this.message = "文件 {" + filename + "} 写入失败!";
54             this.logger.error(this.message, ioe);
55             
56             success = false;
57         } catch (UnsupportedCharsetException uce){
58             this.message = "文件 {" + filename + "} 编码格式设置失败!";
59             this.logger.error(this.message, uce);
60             
61             success = false;
62         }
63         
64         return success;
65     }
CSV 文件写入方法源码

CSV文件写入方法测试源码如下所示,敬请参阅!

 1     /**
 2      * Test : read|write CSV file
 3      * 
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_csvWrite_and_csvRead, 2014-11-25 16:28:20 Exp $
 6      *
 7      */
 8     @Test
 9     public void test_csvWrite_and_csvRead(){
10         this.message = "\n\n\nTEST:FileUtils.csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata)";
11         this.logger.debug(this.message);
12         
13         this.fu = new FileUtils();
14         
15         // change to you local path
16         String filename = this.constantslist.PROJECTHOME + this.constantslist.FILESEPARATOR + 
17                           "testng-temp" + this.constantslist.FILESEPARATOR + "createfile.csv";
18         
19         ArrayList<String[]> csvdata = new ArrayList<String[]>();
20         String[] rows;
21         
22         // init csv data
23         for (int i = 0; i < 20; i++) {
24             rows = new String[10];
25             
26             for (int j = 0; j < rows.length; j++) {
27                 rows[j] = i + " = " + j;
28             }
29             
30             csvdata.add(rows);
31         }
32         
33         boolean w = this.fu.csvWrite(filename, ',', "UTF-8", csvdata);
34         
35         Assert.assertEquals(w, true, "Test case failed.");
36     }
CSV 文件写入方法测试源码

至此, Java学习-015-CSV 文件写入实例源代码 顺利完结,希望此文能够给初学 Java 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

posted @ 2015-06-26 14:52  范丰平  Views(544)  Comments(0Edit  收藏  举报