日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射+javacsv+scv文件构建资源获取

發(fā)布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射+javacsv+scv文件构建资源获取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.反射之前已經(jīng)寫過,大家可以在http://www.cnblogs.com/myadmin/p/5282628.html中大概了解下。同時請大家指正。

javacsv.jar:java中用來處理csv文件的jar包

csv文件:逗號分隔值(Comma-Separated Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個字符序列,不含必須像二進制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。通常,所有記錄都有完全相同的字段序列。

CSV文件格式的通用標準并不存在,但是在RFC 4180中有基礎(chǔ)性的描述。使用的字符編碼同樣沒有被指定,但是7-bitASCII是最基本的通用編碼(來自百度) 注意點:csv文件的編碼格式! 代碼如下: import java.io.BufferedReader; import java.io.FileReader; import java.lang.reflect.Field; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List;import com.csvreader.CsvReader; /*** 2016.3.22* @author sgl* CsvReaderUtil 用于處理csv文件的工具類*/ public class CsvReaderUtil {/*** 讀取csv文件表頭信息* @param fileName* @return*/private static List<String> readHeader(String fileName) {try {@SuppressWarnings("resource")BufferedReader reader = new BufferedReader(new FileReader(fileName));String header = reader.readLine();System.out.println(header);String[] temps = header.split(",");List<String> headerList = new ArrayList<String>();for (String string : temps) {if (!string.equals("$end")) {headerList.add(string);}}return headerList;} catch (Exception e) {e.printStackTrace();}return null;}/*** 讀取csv內(nèi)容* @param fileName* @return* @throws Exception*/private static ArrayList<String[]> readeCsv(String fileName) throws Exception {ArrayList<String[]> csvList = new ArrayList<String[]>(); String csvFilePath = fileName;CsvReader reader = new CsvReader(csvFilePath, ',', Charset.forName("UTF-8")); reader.readHeaders(); while (reader.readRecord()) { String[] Lines = reader.getValues();boolean isStop = false;for (int i = 0; i < Lines.length; i++) {if (Lines[0].equals("$end")) {isStop = true;break;}}if (isStop) {break;}csvList.add(Lines);}reader.close();return csvList;}/*** 通過反射獲取對象列表* @param headerList csv表頭信息(表頭字段需和類屬性對應)
*
@param cntList csv表數(shù)據(jù)列表
*
@param classNmae 類名 * @param path csv文件路徑
*
@return* @throws Exception*/public static List<Object> getConfigList(String path, String classNmae)throws Exception {List<Object> list = new ArrayList<Object>();List<String> headerList=readHeader(path);List<String[]> cntList=readeCsv(path);Class<?> clazz = Class.forName(classNmae);for (String[] tempArrs : cntList) {Object obj = clazz.newInstance();for (int i = 0; i < headerList.size(); i++) {Field f = clazz.getDeclaredField(headerList.get(i));System.out.println(headerList.get(i)+"------"+tempArrs[i]);f.setAccessible(true);setParamter(obj, f, tempArrs[i]);}list.add(obj);}return list;}/*** 設(shè)置參數(shù)* @param obj* @param f* @param val* @throws Exception*/private static void setParamter(Object obj, Field f, String val) throws Exception {System.out.println(f.getType().getCanonicalName());if (("int").equals(f.getType().getCanonicalName())||("java.lang.Integer").equals(f.getType().getCanonicalName())) {f.set(obj, Integer.parseInt(val)); } else if (("long").equals(f.getType().getCanonicalName())|| ("java.lang.Long").equals(f.getType().getCanonicalName())) {f.set(obj, Long.parseLong(val));} else if (("float").equals(f.getType().getCanonicalName())) {f.set(obj, Float.parseFloat(val));} else if (("float[]").equals(f.getType().getCanonicalName())) {f.set(obj, getFloatArrayByString(val));} else if (("java.lang.String").equals(f.getType().getCanonicalName())) {f.set(obj, val);} else if (("java.lang.Long[]").equals(f.getType().getCanonicalName())) {f.set(obj, getLongArrayByString(val));} else if (("int[]").equals(f.getType().getCanonicalName())) {f.set(obj, getIntArrayByString(val));} else if (("java.util.Date").equals(f.getType().getCanonicalName())) {f.set(obj, getDateByString(val));}}private static Object getDateByString(String val) {return DateFormatUtils.getDates(val);}private static Long[] getLongArrayByString(String temp) {temp = temp.substring(1, temp.length() - 1);String[] arrays = temp.split(",");Long[] newArr = new Long[arrays.length];for (int i = 0; i < newArr.length; i++) {newArr[i] = Long.parseLong(arrays[i]);}return newArr;}private static float[] getFloatArrayByString(String temp) {temp = temp.substring(1, temp.length() - 1);String[] arrays = temp.split(",");float[] newArr = new float[arrays.length];for (int i = 0; i < newArr.length; i++) {newArr[i] = Float.parseFloat(arrays[i]);}return newArr;}private static int[] getIntArrayByString(String temp) {temp = temp.substring(1, temp.length() - 1);String[] arrays = temp.split(",");int[] newArr = new int[arrays.length];for (int i = 0; i < newArr.length; i++) {newArr[i] = Integer.parseInt(arrays[i]);}return newArr;} }


轉(zhuǎn)載請注明出處,謝謝!

轉(zhuǎn)載于:https://www.cnblogs.com/myadmin/p/5309930.html

總結(jié)

以上是生活随笔為你收集整理的反射+javacsv+scv文件构建资源获取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。