package service;
import java.io.*;
import java.util.ArrayList;
/**
* 按行读取csv文件每行内容,会将csv文件的所有行内容都读出,并转化为整体数组
* 运行mian方法结果 数组长度为4,即意味着获取的整行元素,实际是算整体为一个元素长度
*
* @author zhangkuan
* @version Id: ReadCsvAllLineConvertArrayTest.java, v 0.1 2022/5/10 15:00 PM zhangkuan Exp $$
*/
public class ReadCsvAllLineConvertArrayTest {
/**
* 按行读取csv文件数据,并返回ArrayList<String>
*
* @param filePath 文件路径
* @return ArrayList<String> 按行读出来的集合类型
*/
public static ArrayList<String> readCsvByBufferedReader(String filePath) {
File csv = new File(filePath);
csv.setReadable(true);
csv.setWritable(true);
InputStreamReader isr = null;
BufferedReader br = null;
try {
isr = new InputStreamReader(new FileInputStream(csv), "UTF-8");
br = new BufferedReader(isr);
} catch (Exception e) {
e.printStackTrace();
}
String line = "";
ArrayList<String> records = new ArrayList<>();
try {
while ((line = br.readLine()) != null) {
// System.out.println(line);//打印读出来的每行的内容
records.add(line);
}
// System.out.println("csv表格读取行数:" + records.size());//打印总共读取多少行
} catch (IOException e) {
e.printStackTrace();
}
return records;
}
/**
* 转换List<List<String>>为 String[]类型
*
* @return String[] 按行读出来的数组
*/
public String[] arrayListConvertArray (String filePath) {
ArrayList<String> records = readCsvByBufferedReader(filePath);
String[] strings1 = records.toArray(new String[records.size()]);
return strings1;
}
/**
* main方法测试,调用arrayListConvertArray方法传入入参文件路径
*
* @return String[] 按行读出来的数组
*/
public static void main(String[] args) {
ReadCsvAllLineConvertArrayTest test = new ReadCsvAllLineConvertArrayTest();
String[] s = test.arrayListConvertArray("D:\\111.csv");
System.out.println(s.length);
//for循环遍历最终按行读出来的数组结果
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
/**
* 最终运行main方法结果
* 4 数组长度为4,即意味着获取的整行元素,实际是算整体为一个元素长度 需要获取指定元素,可以参考ReadCsvAppointLineConvertArrayTest类
*
* 姓名, 证件号,手机号
* 张三,555,111
* 李四,535,113
* 王五,123,456
*/
}
}