前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。

readcsvutil工具类

package com.hanfengyeqiao.gjb.utils;

import java.io.*;

import java.util.*;

/**

* csv工具类

*/

public class readcsvutil {

private static final string fix="\ufeff";

/**

* 获取csv文件内容

* @return 对象list

*/

public static list> getresource(byte[] bate) throws ioexception {

list> allstring = new arraylist();

map callloginfo ;

list list = new arraylist();

// 获取文件内容

list = getsource(bate);

// 获取文件表头

list title = arrays.aslist(list.get(0).split(","));

string customername = title.get(0).trim();

string customerno = title.get(1).trim();

// 头部会带有"\ufeff"值

if(customername.startswith(fix)){

customername = customername.replace(fix, "");

}

callloginfo = new hashmap();

callloginfo.put("param1",customername);

callloginfo.put("param2",customerno);

allstring.add(callloginfo);

list.remove(0);

// 循环内容

for(int i = 0; i

list content = arrays.aslist(list.get(i).split(","));

// 当没有添加额外参数时

if(content!=null){

callloginfo = new hashmap();

callloginfo.put("param1",content.get(0));

callloginfo.put("param2",content.get(1));

allstring.add(callloginfo);

}

}

return allstring;

}

/**

* 读文件数据

*/

public static list getsource(byte[] bate) throws ioexception {

bufferedreader br = null;

bytearrayinputstream fis=null;

inputstreamreader isr = null;

try {

fis = new bytearrayinputstream(bate);

//指定以utf-8编码读入

isr = new inputstreamreader(fis,"utf-8");

br = new bufferedreader(isr);

} catch (exception e) {

e.printstacktrace();

}

string line;

string everyline ;

list allstring = new arraylist<>();

try {

//读取到的内容给line变量

while ((line = br.readline()) != null){

everyline = line;

allstring.add(everyline);

}

} catch (ioexception e) {

e.printstacktrace();

}finally {

if(fis != null){

fis.close();

}

if(isr != null){

isr.close();

}

}

return allstring;

}

}

控制器(这里用的springboot):

package com.hanfengyeqiao.gjb.controller.admin;

import com.hanfengyeqiao.gjb.utils.readcsvutil;

import io.swagger.annotations.api;

import org.springframework.web.bind.annotation.requestmapping;

import org.springframework.web.bind.annotation.restcontroller;

import org.springframework.web.multipart.multipartfile;

import javax.servlet.http.httpservletrequest;

import java.util.list;

import java.util.map;

@api(tags = "")

@restcontroller

@requestmapping("/admin")

public class admincertcontroller {

@requestmapping("/test/upload")

public void upload(httpservletrequest request, multipartfile upfile) throws exception {

if (request.getmethod().equals("post")) {

byte[] bate =upfile.getbytes();

list> list=readcsvutil.getresource(bate);

if(list!=null){

for(map m:list){

system.out.println("param1:"+m.get("param1")+";param2:"+m.get("param2")+"。");

}

}

}

}

}

html代码:

test

上传:

示例文件

运行结果

在处理csv文件的时候容易出现编码上的问题,小伙伴们写代码的时候要多注意一下!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java上传csv文件上传_java处理csv文件上传示例详解相关推荐

  1. java与与短路与_Java中短路运算符与逻辑运算符示例详解

    1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...

  2. java类的定义的实例_Java中类的定义和初始化示例详解

    类的定义 类的定义格式 //创建类 class classname{ field ://成员属性/字段 method://方法 } class为定义类的关键字,classname为类的名字,{ }为类 ...

  3. java去掉字符串中前后空格函数_JAVA中去掉字符串空格各种方法详解

    1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 代码如下 复制代码 ...

  4. java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解

    下面要给大家讲到的就是Java内置包装类方面的知识,这章主要会讲到Java包装类装箱和拆箱方面的知识,一起来了解一下. Java为每种基本数据类型分别设计了对应的类,这就被叫做是包装类(Wrapper ...

  5. java网络编程阻塞_Java网络编程由浅入深三 一文了解非阻塞通信的图文代码示例详解...

    本文详细介绍组成非阻塞通信的几大类:Buffer.Channel.Selector.SelectionKey 非阻塞通信的流程ServerSocketChannel通过open方法获取ServerSo ...

  6. java 回溯_java 实现迷宫回溯算法示例详解

    用一个7 x 7的矩形表示迷宫,0和1分别表示的是通路和障碍.通过设计编写程序找到蓝色小球达到蓝色旗子的路线 思路: 构建一个迷宫(用二维数组)实现找通路的方法findRoad() 构建二维数组不难, ...

  7. java的继承实例_java教程之java继承示例详解

    这篇文章主要介绍了java继承示例详解,需要的朋友可以参考下 什么是继承(extends)? 继承是:新定义的类是从已有的类中获取属性和方法的现象. 这个已有的类叫做父类, 从这个父类获取属性和方法的 ...

  8. 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解

    React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...

  9. 不愧是京东大牛!用Java实现黄金分割数的示例详解(附代码)

    这篇文章主要介绍了java 实现黄金分割数的示例详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧. 黄金分割数 0.618 与美学有重要的关系.舞台上报幕员所站的位置大约就是舞台宽 ...

  10. Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解

    之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 今天主要介绍concurre ...

最新文章

  1. javascript函数式_JavaScript中的函数式编程—结合实际示例(第1部分)
  2. equals方法重写详解
  3. jdk1.8 源码分析导图
  4. inventor2019有无CAE_Inventor2019最新下载_Inventor2019正式版 - 软件帝
  5. spss方差分析_交叉设计及SPSS多因素方差分析
  6. 2014 android 应用开发大赛,2014年全国高校移动互联网应用开发创新大赛
  7. [Ruby on Rails系列]3、初试Rails:使用Rails开发第一个Web程序
  8. Python机器学习 集成算法实例
  9. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_03 斗地主案例(单列)_1_斗地主案例的需求分析...
  10. linux拆分文件会影响源文件吗,linux split拆分文件
  11. php中的数据库操作和字符串操作session与cookie操作,PHP的cookie与session原理及用法详解...
  12. 西门子逻辑运算指令_西门子plc位逻辑运算指令
  13. java 微信公众平台 开源_Java微信公众号开发之开源框架推荐
  14. iOS多线程之GCD
  15. Android配置启动页
  16. pthread_cond_destroy死锁卡住问题处理记录
  17. 电脑拆机(华硕FL5900)+光驱改固态
  18. 试算平衡表示例图_案例十一试算平衡表
  19. 陌陌八成营收靠直播 直播行业已进入两极分化
  20. message: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryksbSBUwTCB6eHI3j;charse

热门文章

  1. Hive常见的属性配置
  2. 网页滚动条上下滚动固定元素左右不固定之sticky
  3. 从xml中返回的对象,和new 返回的对象时不同的。
  4. keepalived配置高可用集群
  5. Redux的全家桶与最佳实践
  6. 如何恢复osd的auth表中的权限
  7. 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现
  8. 服务器控件转换成HTML
  9. IE6PNG8PNG24test
  10. Linux 的mv命令