@PostMapping("test1") public void test1() { List<String> list = getFile("C:\\data\\历史个例"); test1(list); } // public static void main(String[] args) { // // List<String> list = getFile("C:\\data\\历史个例"); // test1(list); // } private void test1(List<String> list){ // 定义list,方便后面批次新增 TlVacuumFurnaceLog是表实体类 List<TlVacuumFurnaceLog> result1 = new ArrayList<>(); List<TlVacuumFurnaceLog> result10 = new ArrayList<>(); try { for (String s : list) { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(s), "GBK")); //reader.readLine();//第一行信息是标题信息,跳过,如果需要第一行信息,请删除这行代码 //区别1分钟和10分钟入库 if (s.contains("excel1min")) { // 循环每行数据 pakdata(result1, s, reader); }else if (s.contains("excel10min")) { // 循环每行数据 pakdata(result10, s, reader); } } // 保存到数据库 // warnService.saveBatch1(result1); // warnService.saveBatch10(result10); } catch(Exception e){ e.printStackTrace(); } } private static void pakdata(List<TlVacuumFurnaceLog> result10, String s, BufferedReader reader) throws IOException { String line; String fileName = new File(s).getName(); while ((line = reader.readLine()) != null) { String item[] = line.split(","); if (item.length > 0) { // 调用下面的方法,将每列数据赋值到对应的属性中,返回的结果新增到list内 //result.add(propertiesAssignment(item)); TlVacuumFurnaceLog a = new TlVacuumFurnaceLog(); a.setData(item[1].trim()); a.setTm(item[0].trim()); if (fileName.contains("A")) { fileName = fileName.replace("A", "65"); } a.setStcd(fileName.substring(0, fileName.lastIndexOf("."))); result10.add(a); } } } // 给定目录的绝对路径,获取该目录下的所有文件(子目录的文件也可递归得到) public List<String> getFile(String path) { List<String> list = new ArrayList<>(); File file = new File(path); File[] array = file.listFiles(); for (int i = 0; i < array.length; i++) { if (array[i].isFile()) { String res = array[i].getPath(); // System.out.println("^^^^^" + array[i].getName()); // System.out.println("#####" + array[i]); // System.out.println("*****" + res); list.add(res); } else if (array[i].isDirectory()) { list.addAll(getFile(array[i].getPath())); } } return list; } // /** // * 将行数据中每列数据分别添加到对应的属性中,返回实体类 // */ // private static TlVacuumFurnaceLog propertiesAssignment(String[] item) throws Exception{ // // 获取目标类class // Class<TlVacuumFurnaceLog> clazz = TlVacuumFurnaceLog.class; // // 实例化 // TlVacuumFurnaceLog tlVacuumFurnaceLog = clazz.newInstance(); // // // 获取对象全部属性 // Field[] fields = clazz.getDeclaredFields(); // // 循环遍历 当前行数据的列数 // for (int i = 0; i < item.length; i++) { // // 获取方法名 // String methodName = "set" + fields[i+1].getName().substring(0,1).toUpperCase() + fields[i+1].getName().substring(1); // // 获取Method参数 // Method method = clazz.getMethod(methodName, fields[i+1].getType()); // // 判断当前属性是什么类型的,将数据进行类型转换 // if ("Integer".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog,Integer.parseInt(item[i])); // } else if ("BigDecimal".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog, new BigDecimal(item[i])); // } else if ("Short".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog,Short.valueOf(item[i])); // } else if ("Double".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog,Double.valueOf(item[i])); // } else if ("Byte".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog,Byte.valueOf(item[i])); // } else if ("String".equals(fields[i+1].getType().getSimpleName())){ // method.invoke(tlVacuumFurnaceLog,item[i]); // } // // } // // return tlVacuumFurnaceLog; // } /** * 核实数据 */ @PostMapping("test12") public void test12() throws IOException { List<String> list = new ArrayList<>(); File file = new File("C:\\data\\历史个例"); File[] array = file.listFiles(); for (int i = 0; i < array.length; i++) { if (array[i].isFile()) { String res = array[i].getPath(); list.add(res); } else if (array[i].isDirectory()) { list.addAll(getFile(array[i].getPath())); } } for (String s : list) { if (s.contains("excel1min")) { System.out.println(s); } } for (String s : list) { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(s), "GBK")); // 循环每行数据 if (s.contains("excel1min")) { int sCount = 0; while (reader.readLine() != null) { sCount++; } System.out.println(sCount); } } }
===========================
@Override @Transactional(rollbackFor = Exception.class) public void saveBatch10(List<TlVacuumFurnaceLog> list) { long s = System.currentTimeMillis(); int insertLength = list.size(); int i = 0; while (insertLength > 600) { warnMapper.saveBatch10(list.subList(i, i + 600)); i = i + 600; insertLength = insertLength - 600; } if (insertLength > 0) { warnMapper.saveBatch10(list.subList(i, i + insertLength)); } long e = System.currentTimeMillis(); log.warn("十分钟新增数据耗时:"+(e-s)+"ms"); }