Java读取和写入CSV文件
2016-04-17 15:50
661 查看
有一种比较简单的数据存储方式,那就是CSV,这个系统默认采用逗号分割的文件方式。Excel转成CSV文件,在Windows下默认的列表分隔符是逗号(,)。在某些情况下,我们可能需要更改列表分隔符,如某个单元格内容包含逗号,而这可能导致使用它的程序出错,这样就需要更改列表分隔符;再比如Mac OS X下CSV文件的列表分隔符是分号(;),而且还不方便修改,为了统一两个系统的列表分隔符,我们就需要更改Windows系统的列表分隔符点开“开始菜单”,找到并打开“控制面板”在“控制面板”中找到并打开“区域和语言”在打开“区域和语言“窗体中选择”格式“选项,然后点击“其他设置(D)..."按钮打开“自定义格式”窗体。列表分隔符默认是逗号(,)修改列表分隔符为分号(;),这么做可以保证与Mac OS导出的CSV文件分隔符一致。
package com.jay.test.csv;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;/*** 读取CSV中的数据** @author zcc**/public class CsvUtil {public static void main(String[] args) {readCsvFile("D:\\alipay_record_20160417_1512_1.csv", "gb2312", ",");}/*** 读取CSV文件** @param csvFilePath* 文件路径* @param fileEncoder* 读取文件编码方式,主要是为了解决中文乱码问题。* @param separtor* CSV的分隔符,默认是逗号*/public static void readCsvFile(String csvFilePath, String fileEncoder, String separtor) {InputStreamReader fr = null;BufferedReader br = null;try {fr = new InputStreamReader(new FileInputStream(csvFilePath), fileEncoder);br = new BufferedReader(fr);String rec = null;String[] argsArr = null;while ((rec = br.readLine()) != null) {if (rec != null) {argsArr = rec.split(separtor);for (int i = 0; i < argsArr.length; i++) {System.out.print("num " + (i + 1) + ":" + argsArr[i] + "\t");}System.out.println();}}} catch (IOException e) {e.printStackTrace();} finally {try {if (fr != null)fr.close();} catch (IOException ex) {ex.printStackTrace();}try {if (br != null)br.close();} catch (Exception e2) {e2.printStackTrace();}}}}
相关文章推荐
- java面向对象三大特征之封装
- java 修改Excel表格的内容through poi
- JAVA 平台下的webservice
- java之FileInputStream与FileOutputStream
- Java基础--并发实用工具(3)
- 《day15---多线程安全问题_JDK1.5的锁机制》
- [疯狂Java]JDBC:事务管理、中间点、批量更新
- 第12章--Java集合之Map接口
- java 实现二叉树结构基本运算详细代码
- 关于Java堆栈存储数据的问题
- Java总结篇系列:Java泛型
- java约瑟夫环 -n围成一个圈,报数逢三退出 最后一个人初始号码
- Java内存溢出示例
- JAD java反编译工具(class反射工具)
- 第七届蓝桥杯java b组省赛第九题(取球博弈)
- spring webMVC配置
- Spring Security 国际化文件 messages_zh_CN.properties 中文解释
- java中的异常
- JAVA的abstract修饰符 && 接口interface用法 && 抽象类和interface的差别
- java后台动态创建三级菜单