论坛首页 入门技术论坛

以最快的速度获取文本行数(使用Java)

浏览 23589 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-12-13   最后修改:2010-12-13
业务场景:用户通过浏览器上传文件,后台须判断此文本文件的行数是否超过限制(50行)

涉及技术:Apache表单文件,JDK的io

代码片段:
        //判断文件行数,formFile是表单文件类org.apache.struts.upload.FormFile
        LineNumberReader lnr = new LineNumberReader(new InputStreamReader(formFile.getInputStream()));
        lnr.skip(formFile.getFileSize());
        if(lnr.getLineNumber() + 1 >= 50) {
            //err输出“文件行数不能超过50行!”
        }
        lnr.close();


优缺点:我认为优点是不用遍历了,缺点不能辨别空白行

小弟抛砖引玉,大家评论下这段代码吧,说说如何用Java最有效率的获取文本行数
   发表时间:2010-12-13  
难道大家没遇见过这种问题么?获取文本行数的
0 请登录后投票
   发表时间:2010-12-13  
先问一下

lnr.getLineNumber() + 1 >= 50
为什么要这么写?
0 请登录后投票
   发表时间:2010-12-13  
觉得java代码嵌入正则表达式最快
0 请登录后投票
   发表时间:2010-12-13  
jxygjzh 写道
先问一下

lnr.getLineNumber() + 1 >= 50
为什么要这么写?


很简单,这个api得到的行数是从0开始的,业务上需要从1开始
0 请登录后投票
   发表时间:2010-12-13  
piper 写道
觉得java代码嵌入正则表达式最快


请举例
0 请登录后投票
   发表时间:2010-12-13  
数下回车的个数行吗?
0 请登录后投票
   发表时间:2010-12-13  
LineNumberReader底层是怎么写的?  难道真的不用遍历?
0 请登录后投票
   发表时间:2010-12-13  
zhangcong170 写道
LineNumberReader底层是怎么写的?  难道真的不用遍历?


确实,刚看了下LineNumberReader的实现,里面遍历了。唉,本以为找到个方式不用遍历的。。。
0 请登录后投票
   发表时间:2010-12-13  
smo_apple 写道
数下回车的个数行吗?


好主意,可惜我不会正则,一会忙完了研究研究
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics