年轻人,你对io一无所知
来源:互联网 发布:广告文案的100案例知乎 编辑:程序博客网 时间:2024/05/21 19:43
最近遇到了一个关于io的问题。一个4G的文件需要我读出来,然后处理下放到数据库里。4G,拿到的时候只是觉得大了点。怕啥,读出来,处理好,ok。保存。。。。。。
那么,开干吧。
@RequestMapping("xxxx") @ResponseBody @Transactional(readOnly = false,propagation = Propagation.REQUIRED) public String readText(HttpServletRequest request,String type){ File file = new File("xxxx.json"); StringBuilder result = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件 String s = null; while((s = br.readLine())!=null){//使用readLine方法,一次读一行 JSONObject json = JSONObject.parseObject(s); //处理业务 } br.close(); }catch(Exception e){ e.printStackTrace(); } return result.toString(); }明显,失败咧。根本读不出来。太大了,赶紧找外援。然后老大说要用流来处理(嘛是流),并且你要想办法把数据切割下。。。。。巨尴尬。好吧,滚滚爬爬,还是借鉴来了老大的代码。脸为何物?对于这个问题吗,不会就借鉴,借鉴了就要及时总结。
@RequestMapping("/xxxx")@ResponseBodypublic String uploadAreaPersonLocal(HttpServletRequest request, String fileName, String type) throws JSONErrorException { Map<String,Object> map = new HashMap<>(); Reader reader = null; int count = 0; try { StringBuilder builder = new StringBuilder(); int charread = 0; JSONArray array = new JSONArray(); reader = new InputStreamReader(new FileInputStream(fileName)); // 读入多个字符到字符数组中,charread为一次读取字符数 while ((charread = reader.read()) != -1) { if ((char)charread == '[') { break; } } while ((charread = reader.read()) != -1) { char tempChar = (char)charread; if (tempChar == ']') { break; } if (tempChar == '{') { builder.setLength(0); } builder.append(tempChar); if (tempChar == '}') { array.add(JSON.parseObject(builder.toString())); builder.setLength(0); } if (array.size() >= 10000) { array = new JSONArray(); count = count + 10000; } } if (array.size() > 0) { if (Integer.valueOf(type) == 1) { this.cityDataService.saveLivePeople(array); } else if(Integer.valueOf(type) == 2) { this.cityDataService.saveDailyPeople(array); } System.out.println("已保存:" + (count + array.size())); } } catch (Exception e1) { e1.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } map.put(Constant.CODE, "0"); map.put(Constant.MESSAGE, "success"); logger.info("城市自定义区域人口数据保存完成"); return JSON.toJSONString(map);}
BufferedReader
知识点: BufferReader 、Reader、File、FileInputStream
主要对IO的理解不够深刻。那么,需要认真的看一看io了。
阅读全文
0 0
- 年轻人,你对io一无所知
- 你一无所知的CSS
- 一无所知
- 一无所知
- 你对IO/流还懵逼么
- 对年轻人的忠告
- 年轻人,你何必着急
- 年轻人,你何必着急
- 对JavaScript一无所知~离精通只差一步之遥的人
- 马云:初次创业 我对科技和计算机一无所知
- Spring基础(一):对Spring一无所知的童鞋请进!!!
- 心的躁动不安 是我对世界的一无所知
- DevOps势不可挡,竟然还有15%的企业对其一无所知!
- https时代来了,你却还一无所知?
- 年轻人,你着什么急?
- 年轻人,你着什么急?
- 1周前,一个对外挂一无所知的人,在的成长过程(经典推荐)
- 适合阅读范围:对JavaScript一无所知~离精通只差一步之遥的人 -----js 循序渐进
- java post方式传递数据的两种方式(http https)
- window.history的跳转实质-HTML5 history API 解析
- vue通信
- tensorflow tf.transpose()
- 推荐系统中的冷启动和探索利用问题探讨 (下)
- 年轻人,你对io一无所知
- linux设备驱动学习总结-keyPoints
- 数据结构基础 综述
- 一张图让你看懂各开源License
- 快速掌握vuex
- 【网易】:合唱团(动态规划)
- HDU 2196 Computer(求树任意点的最远点)
- git版本管理
- PhotoView图片放大缩小使用方法