精华内容
下载资源
问答
  • java读取文件到bean
    2022-01-25 13:31:58

    /**
     * 解析csv文件并转成bean
     * @param file csv文件
     * @param clazz 类
     * @param <T> 泛型
     * @return 泛型bean集合
     */
    public static <T> List<T> getCsvData(MultipartFile file, Class<T> clazz) {
        InputStreamReader inputStreamReader = null;
        try {
            InputStream inputStream = getInputStream(file.getInputStream());
            inputStreamReader = new InputStreamReader(inputStream, "utf-8");
        } catch (Exception e) {
            e.printStackTrace();
    
        }
    
        HeaderColumnNameMappingStrategy<T> strategy = new HeaderColumnNameMappingStrategy<>();
        strategy.setType(clazz);
    
        CsvToBean<T> csvToBean = new CsvToBeanBuilder<T>(inputStreamReader)
                .withSeparator(',')
                .withQuoteChar('\'')
                .withMappingStrategy(strategy).build();
        return csvToBean.parse();
    }

    /**
     * 读取流中前面的字符,看是否有bom,如果有bom,将bom头先读掉丢弃
     *
     * @param in
     * @return
     * @throws IOException
     */
    public static InputStream getInputStream(InputStream in) throws IOException {
    
        PushbackInputStream testin = new PushbackInputStream(in);
        int ch = testin.read();
        if (ch != 0xEF) {
            testin.unread(ch);
        } else if ((ch = testin.read()) != 0xBB) {
            testin.unread(ch);
            testin.unread(0xef);
        } else if ((ch = testin.read()) != 0xBF) {
            throw new IOException("错误的UTF-8格式文件");
        } else {
        }
        return testin;
    }
    更多相关内容
  • Java读取和写入CSV文件工具类(Bean) 1、工具类CsvUtils.java package com.ciphergateway.utils; import com.ciphergateway.csvData; import java.io.*; import java.util.ArrayList; import java.util....

    Java读取和写入CSV文件工具类(Bean)

    1、工具类CsvUtils.java

    package com.ciphergateway.utils;
    
    
    
    import com.ciphergateway.csvData;
    
    
    
    import java.io.*;
    
    import java.util.ArrayList;
    
    import java.util.Arrays;
    
    import java.util.List;
    
    
    
    /**
    
     * @author : HMF
    
     * @ClassName CsvUtil
    
     * @description 读取和写入csv的工具类
    
     * @date: 2022/2/25 21:37
    
     **/
    
    
    
    
    
    public class CsvUtils {
    
        public static BufferedReader reader;
    
        public static BufferedWriter bw;
    
        public static int linkNumber;
    
    
    
        public static void closeAll() {
    
            try {
    
                if(reader != null)
    
                    reader.close();
    
                if(bw != null)
    
                    bw.close();
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
            }
    
        }
    
        /**
    
         * 读取CSV格式的文档数据
    
         * @param filePath CSV格式的文件路劲
    
         * @return dataList csv数据读取放入二维list中。
    
         */
    
        public static List<List<String>> readCSVFileData(String filePath){
    
            List<List<String>> dataList=new ArrayList<>();
    
            try {
    
                reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));
    
            }catch(FileNotFoundException | UnsupportedEncodingException e){
    
                e.printStackTrace();
    
            }
    
            try{
    
                String line=null;
    
                while ((line=reader.readLine())!=null){
    
                    String aa[]=line.split(",");
    
                    List<String> cellList= Arrays.asList(aa);
    
                    //System.out.println(cellList);
    
                    dataList.add(cellList);
    
                }
    
                closeAll();
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
            }
    
    
    
            return dataList;
    
        }
    
    
    
        public static List<csvData>  readData(String filePath){
    
            List<List<String>> dataList=readCSVFileData(filePath);
    
            System.out.println(dataList);
    
            List<csvData> csvList=new ArrayList<>();
    
            for(int i = 0; i<dataList.size(); i++){
    
                if(i !=0) {
    
                    csvData data=new csvData();
    
                    data.setId(Integer.parseInt(dataList.get(i).get(0)));
    
                    data.setName(dataList.get(i).get(1));
    
                    data.setAge(Integer.parseInt(dataList.get(i).get(2)));
    
                    csvList.add(data);
    
                }
    
            }
    
            return csvList;
    
        }
    
    
    
        /**
    
         * 读取CSV格式的文档数据
    
         * @param filePath CSV格式的文件路劲
    
         * @param data 需要写入的数据
    
         * @return dataList csv数据读取放入二维list中。
    
         */
    
        public static void writeCSVFileData(String filePath, csvData data){
    
            try {
    
                bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath, true), "UTF-8"));
    
                if(linkNumber==0){
    
                    bw.write("编号"+","+"姓名"+","+"年龄");
    
                    bw.newLine();
    
                    ++linkNumber;
    
                }
    
                bw.write(data.getId()+","+data.getName()+","+data.getAge());
    
                bw.newLine();
    
                bw.flush();
    
                closeAll();
    
            } catch (Exception e) {
    
                closeAll();
    
                e.printStackTrace();
    
                System.exit(0);
    
            }
    
        }
    
    }

    2、实体类csvData.java

    这里示例有3个字段:id,name,age

    package com.ciphergateway;
    
    
    
    /**
    
     * @author : HMF
    
     * @ClassName csvData
    
     * @description 数据
    
     * @date: 2022/2/26 18:03
    
     **/
    
    
    
    public class csvData {
    
        private int id;
    
        private String name;
    
        private int age;
    
    
    
        public int getId() {
    
            return id;
    
        }
    
        public void setId(int id) {
    
            this.id = id;
    
        }
    
        public String getName() {
    
            return name;
    
        }
    
        public void setName(String name) {
    
            this.name = name;
    
        }
    
        public int getAge() {
    
            return age;
    
        }
    
        public void setAge(int age) {
    
            this.age = age;
    
        }
    
    }

    data.csv数据

    3、执行类

    import java.util.ArrayList;
    
    import java.util.List;
    
    
    
    import com.ciphergateway.csvData;
    
    import com.ciphergateway.utils.CsvUtils;
    
    
    
    /**
    
     * @author : HMF
    
     * @ClassName ReadFileTest
    
     * @description TODO
    
     * @date: 2022/2/25 21:37
    
     **/
    
    
    
    
    
    public class ReadFileTest {
    
        public static void main(String[] args) {
    
            //读取
    
            List<csvData> csvList=CsvUtils.readData("./data.csv");
    
            for (int i=0;i<csvList.size();i++) {
    
                System.out.println(csvList.get(i).getId()+" "+csvList.get(i).getName()+" "+csvList.get(i).getAge());
    
            }
    
            //写入
    
            List<csvData> csvList2=new ArrayList<>();
    
            csvData a1=new csvData();
    
            a1.setId(1);
    
            a1.setName("张三");
    
            a1.setAge(25);
    
            csvList2.add(a1);
    
            csvData a2=new csvData();
    
            a2.setId(2);
    
            a2.setName("李四");
    
            a2.setAge(30);
    
            csvList2.add(a2);
    
    
    
            for (csvData data:csvList2) {
    
                //System.out.println(data.getId()+" "+data.getName()+" "+data.getAge());
    
                CsvUtils.writeCSVFileData("./result.csv", data);
    
            }
    
        }
    
    }

    执行结果:

    展开全文
  • 利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...
  • Bean保存成流文件读取文件转换成bean
  • xml中声明自定义的bean和引入bean引入bean中的内容,自定义bean代码随意package com.shiro.utils;import org.springframework.beans.BeansException;import org.springframework.beans.factory....

    xml中声明自定义的bean和引入bean

    引入bean中的内容,自定义bean代码随意

    package com.shiro.utils;

    import org.springframework.beans.BeansException;

    import org.springframework.beans.factory.NoSuchBeanDefinitionException;

    import org.springframework.context.ApplicationContext;

    import org.springframework.context.ApplicationContextAware;

    /**

    * 上下文util

    * @author eadela

    *

    */

    public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override

    public void setApplicationContext(ApplicationContext applicationContext)

    throws BeansException {

    SpringContextUtil.applicationContext = applicationContext;

    }

    public static ApplicationContext getApplicationContext() {

    return applicationContext;

    }

    public static Object getBean(String name) throws BeansException {

    try {

    return applicationContext.getBean(name);

    } catch (Exception e) {

    throw new RuntimeException("获取的Bean不存在!");

    }

    }

    public static T getBean(String name, Class requiredType)

    throws BeansException {

    return applicationContext.getBean(name, requiredType);

    }

    public static boolean containsBean(String name) {

    return applicationContext.containsBean(name);

    }

    public static boolean isSingleton(String name)

    throws NoSuchBeanDefinitionException {

    return applicationContext.isSingleton(name);

    }

    public static Class extends Object> getType(String name)

    throws NoSuchBeanDefinitionException {

    return applicationContext.getType(name);

    }

    public static String[] getAliases(String name)

    throws NoSuchBeanDefinitionException {

    return applicationContext.getAliases(name);

    }

    }

    在需要的地方引入自定义bean

    public class CusUtil {

    final static CustomBean cus = SpringContextUtil.getBean("customBean", CustomBean.class);

    }这样在CusUtil中就可以引用CustomBean 内的内容

    展开全文
  • java如何读取、写入Excel文件(将内容转成任意的bean对象) 将StudentInfo.xlsx里的内容读取出来并封装StudentInfo类的对象中 利用反射可以很好地实现对任意类的数据封装。实现如下 依赖: <!-- ...

    java如何读取、写入Excel文件(将内容转成任意的bean对象)

    将StudentInfo.xlsx里的内容读取出来并封装到StudentInfo类的对象中
    在这里插入图片描述
    利用反射可以很好地实现对任意类的数据封装。实现如下

    依赖:

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.17</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.17</version>
            </dependency>
    
    public class ExcelUtil {
     
    	public static <T> List<T> parseFromExcel(String path, Class<T> aimClass) {
    		return parseFromExcel(path, 0, aimClass);
    	}
     
    	@SuppressWarnings("deprecation")
    	public static <T> List<T> parseFromExcel(String path, int firstIndex, Class<T> aimClass) {
    		List<T> result = new ArrayList<T>();
    		try {
    			FileInputStream fis = new FileInputStream(path);
    			Workbook workbook = WorkbookFactory.create(fis);
                //对excel文档的第一页,即sheet1进行操作
    			Sheet sheet = workbook.getSheetAt(0);
    			int lastRaw = sheet.getLastRowNum();
    			for (int i = firstIndex; i < lastRaw; i++) {
                    //第i行
    				Row row = sheet.getRow(i);
    				T parseObject = aimClass.newInstance();
    				Field[] fields = aimClass.getDeclaredFields();
    				for (int j = 0; j < fields.length; j++) {
    					Field field = fields[j];
    					field.setAccessible(true);
    					Class<?> type = field.getType();
                        //第j列
    					Cell cell = row.getCell(j);
    					if (cell == null)
    						continue;
                        //很重要的一行代码,如果不加,像12345这样的数字是不会给你转成String的,只会给你转成double,而且会导致cell.getStringCellValue()报错
    					cell.setCellType(Cell.CELL_TYPE_STRING);
    					String cellContent = cell.getStringCellValue();
    					cellContent = "".equals(cellContent) ? "0" : cellContent;
    					if (type.equals(String.class)) {
    						field.set(parseObject, cellContent);
    					} else if (type.equals(char.class) || type.equals(Character.class)) {
    						field.set(parseObject, cellContent.charAt(0));
    					} else if (type.equals(int.class) || type.equals(Integer.class)) {
    						field.set(parseObject, Integer.parseInt(cellContent));
    					} else if (type.equals(long.class) || type.equals(Long.class)) {
    						field.set(parseObject, Long.parseLong(cellContent));
    					} else if (type.equals(float.class) || type.equals(Float.class)) {
    						field.set(parseObject, Float.parseFloat(cellContent));
    					} else if (type.equals(double.class) || type.equals(Double.class)) {
    						field.set(parseObject, Double.parseDouble(cellContent));
    					} else if (type.equals(short.class) || type.equals(Short.class)) {
    						field.set(parseObject, Short.parseShort(cellContent));
    					} else if (type.equals(byte.class) || type.equals(Byte.class)) {
    						field.set(parseObject, Byte.parseByte(cellContent));
    					} else if (type.equals(boolean.class) || type.equals(Boolean.class)) {
    						field.set(parseObject, Boolean.parseBoolean(cellContent));
    					}
    				}
    				result.add(parseObject);
    			}
    			fis.close();
    			return result;
    		} catch (
     
    		Exception e) {
    			e.printStackTrace();
    			System.err.println("An error occured when parsing object from Excel. at " + this.getClass());
    		}
    		return result;
    	}
     
     
    	public static void main(String[] args) throws Exception {
             //参数里的5表示有效行数从第5行开始
    		 List<StudentInfo> studentInfos = ExcelUtil.parseFromExcel("C:\\Users\\unive\\Desktop\\StudentInfo.xlsx", 5,
    		 StudentInfo.class);
    		 for (int i = 0; i < studentInfos.size(); i++) {
    		     System.err.println(studentInfos.get(i).toString());
                     }
             }
      }
    

    优化:

    public class ExcelUtil {
        
        // 带标题写入Excel
    	public static <T> void writeExcelWithTitle(List<T> beans, String path) {
    		writeExcel(beans,path,true);		
    	}
    	
    	// 仅把数据写入Excel
    	public static <T> void writeExcel(List<T> beans, String path) {
    		writeExcel(beans,path,false);
    	}
    	
    	private static <T> void writeExcel(List<T> beans, String path, boolean writeTitle) {
    		if(beans == null || beans.size() == 0) return;
    		Workbook workbook = new HSSFWorkbook();
    		FileOutputStream fos = null;
    		int offset = writeTitle ? 1 : 0;
    		try {
    			Sheet sheet = workbook.createSheet();
    			for (int i = 0; i < beans.size() + offset; ++i) {
    				if(writeTitle && i == 0) {createTitle(beans, sheet);continue;}
    				Row row = sheet.createRow(i);
    				T bean = beans.get(i - offset);
    				Field[] fields = bean.getClass().getDeclaredFields();
    				for (int j = 0; j < fields.length; j++) {
    					Field field = fields[j];
    					field.setAccessible(true);
    					Cell cell = row.createCell(j);
    					//Date,Calender都可以 使用  +"" 操作转成字符串
    					cell.setCellValue(field.get(bean)+"");
    				}
    			}
    		    fos = new FileOutputStream(path);
    			workbook.write(fos);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			try {
    				fos.close();
    				workbook.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	private static <T> void createTitle(List<T> beans,Sheet sheet){ 
    		Row row = sheet.createRow(0);
    		T bean = beans.get(0);
    		Field[] fields = bean.getClass().getDeclaredFields();
    		for (int i = 0; i < fields.length; i++) {
    			Field field = fields[i];
    			field.setAccessible(true);
    			Cell cell = row.createCell(i);
    			cell.setCellValue(field.getName());
    		}
    	}
     
        public static void main(String[] args) {
            // scenics这里是自定义景点集合, 不用管
            // 带标题写入excel
            ExcelUtil.writeExcelWithTitle(scenics,
    				"C:\\Users\\unive\\Documents\\景点信息\\scenics.xlsx");
     
            // 不带标题写入excel
            ExcelUtil.writeExcel(scenics,
    				"C:\\Users\\unive\\Documents\\景点信息\\scenicsWithoutTitle.xlsx");
        }	
    }
    

    带标题写入excel的结果:
    在这里插入图片描述
    不带标题写入的结果:
    在这里插入图片描述
    注意:
    直接将生成的excel通过navicat导入数据库会报错,因为生成的excel似乎没有官方的那么标准,所以解决办法是新建一个excel文件,把数据复制过来,再让navicat把这个新建的excel导入到数据库即可。

    展开全文
  • 很多时候需要文件做数据交互,接收到文件后需要对文件解析成bean实体类,这里提供的是工具类,任意文件转任意实体都可以,只要简单的配置一下Class类,很实用
  • 点击图示加号,选取图示文件夹 加入到文件中重新build即可
  • java 获取bean的方式

    2021-02-13 01:13:58
    我们知道可以通过ApplicationContext的getBean方法来获取Spring容器中已初始化的bean。getBean一共有以下四种方法原型:l getBean(String name)l getBean(Class type)l getBean(String name,Class type)l getBean...
  • 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来...一、读取xml配置文件(一)新建一个Java beanpackage chb.demo.vo;public class HelloBean {private String helloWorld;public String...
  • 使用io流读取指定文件夹下的json.txt文件,一键生成java类的指定位置
  • java如何读取excel文件

    2019-03-01 16:28:01
    博文链接:https://kuikui.iteye.com/blog/123921
  • java读取配置文件的几种方法在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。...
  • java时,出现controller文件找不这个bean 首先确定你的xml文件有没有对它进行配置,如果有的话,查看实体类,是否对其进行了序列化,我的出错就是缺少了这一语句的原因。 public class UserBasicManager ...
  • java读XML实体bean

    2016-06-16 15:43:04
    给定一个XML文档,将所有的节点,封装一个实体中,然后,传XML文件名程序,将该文件的内容读实体bean中,返回实体。 xml文档的内容 select * from table {} 根据上面的内容,创建一...
  • Java解析csv文件并转成bean对象

    千次阅读 2020-11-12 20:51:54
    为了批量导入数据,采用了csv文件存储数据,后端写csv解析工具对数据进行读取和解析并导入数据库。pom依赖: <!-- csv文件解析依赖 --> <dependency> <groupId>com.opencsv</groupId> &...
  • 正文 这次写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis...当然也可以自己添加pom文件,如下 3、添加配置文件 application.properties中 4、JEDIS配置类的编写
  • 可使用@value的方式直接读取application.properties中的文件,但有时我们需要配置自定义的properties,下面方法将在springboot启动时利用fileinputstream读取properties文件中的内容,并注入到bean中,@...
  • Java读取properties配置文件的八种方式总结

    千次阅读 多人点赞 2020-12-29 14:01:04
    一、前言 在做Java项目开发过程中,...同时为了让Java程序可以读取 .properties配置文件中的值,Java的JDK中提供了java.util.Properties类可以实现读取配置文件。 二、Properties类 Properties 类位于 java.util.Pro
  • Bean Java配置

    2021-02-28 06:07:35
    Java配置与注解配置不同,Java配置是把Java代码文件当作配置文件,注解配置是在实际Java类中使用注解设置依赖关系。Java配置也会用到一些注解,主要有:@Configuration、@ComponentScan和@Bean。1. 通过@Configura.....
  • Spring Boot学习笔记(五):我们已经...下面就来介绍:Spring Boot 配置文件中的值,如何注入我们自定义的 Java Bean 中。(或者:Java Bean 如何获取配置文件中的值来注入) 如下分别为 Java Bean类和 yml 配置...
  • 为了批量导入数据,采用了csv文件存储数据,后端写csv解析工具对数据进行读取和解析并导入数据库。(使用opencsv) pom依赖: <!-- csv文件解析依赖 --> <dependency> <groupId>com.opencsv<...
  • Java bean 详解

    千次阅读 多人点赞 2020-08-04 11:11:35
    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,...
  • 一、通过context:property-placeholder加载配置文件jdbc.properties中的内容 <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/> 上面的配置和下面配置等价...
  • Java读取配置文件yml中属性的方法

    千次阅读 2022-02-25 10:47:35
    方法一: 在类上添加注解@ConfigurationProperties(prefix="xxx"),定义配置文件中的属性(属性名和配置文件中的...利用注解@Value("${xxx.xxxx}"),在定义属性上添加该注解即可读取配置文件中xxx.xxxx的值 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 146,697
精华内容 58,678
关键字:

java读取文件到bean