java 读取TXT文本数据

版权声明:本文为博主原创文章,未经博主允许不得转载! https://blog.csdn.net/bojinyanfeng/article/details/87347825

通过百度和结合实际情况而写的读取TXT文本数据方法。其实读取TXT文本还有很多方法,这里只使用BufferedReader和Scanner进行读取数据。

首先,通过前台上传TXT文件,后台获取文件并且进行数据读取。前台代码使用form表单提交方式就不多说了,主要给后台的代码。

获取上传文件数据

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
    MultipartFile file = entity.getValue();// 获取上传文件对象
    //获取TXT文本数据
    List<String> listContent = FilesUtils.scanReadFileContent(file.getInputStream());
    List<Entity> entitys = new ArrayList<Entity>();
    for(int i=0;i<listContent.size();i++){
        String lineStr = listContent.get(i);
        String [] strs = lineStr.split("\\s+");//分割字符串
	//这里可能需要判断数组长度是否和字段数一致
	Entityt = new Entity();
        //每个字段数据都可以进行相应的判断,如长度、限制规则等
	t.setName(strs[0]);
	t.setLength(strs[1]);
	entitys.add(t);
    }
    //批量插入数据库
    ...
}

工具类方法

 /**
  * 使用Scanner以行为单位读取文件,读取到最后一行
  * 初步适用于文件上传读取文件数据
  * @param is 文件IO流
  * @author Cai_YF
  * @return 最后返回一行行数据的list集合
  */
 public static List<String> scanReadFileContent(InputStream is) {
     Scanner scan = null;
     List<String> listContent = new ArrayList<>();
     try {
         scan = new Scanner(is, "utf-8");//读取
         String tempString = null;
         while (scan.hasNextLine()) {//判断是否有数据
             tempString = scan.nextLine(); // 一次读入一行
             listContent.add(tempString);
         }
         is.close();
         scan.close();
     } catch (IOException e) {
         e.printStackTrace();
     }
     return listContent;
 }
 /**
  * 使用BufferedReader以行为单位读取文件,读取到最后一行
  * 初步适用于文件上传读取文件数据
  * @param is 文件IO流
  * @param c 缓存 使用BufferedReader,默认每次读入(5 * 1024 * 1024)5M数据.减少IO
  * @author Cai_YF
  * @return 最后返回一行行数据的list集合
  */
 public static List<String> readFileContent(InputStream is,int c) {
     BufferedReader reader = null;
     List<String> listContent = new ArrayList<>();
     try {
         BufferedInputStream bis = new BufferedInputStream(is);
         reader = new BufferedReader(new InputStreamReader(bis, "utf-8"), c==0?5 * 1024 * 1024:c);//缓存
         String tempString = null;
         // 一次读入一行,直到读入null为文件结束
         while ((tempString = reader.readLine()) != null) {
             listContent.add(tempString);
         }
         is.close();
         reader.close();
     } catch (IOException e) {
         e.printStackTrace();
     }
     return listContent;
 }

猜你喜欢

转载自blog.csdn.net/bojinyanfeng/article/details/87347825