目前有这样一个需求,一个很大的数据文件中每行代表一条记录,各个记录之间以\3分隔,行之间以\n分隔。我需要一行一行的读取,之后分隔各个字段,做一些统计的工作。但是现在有这样一个问题,有的记录中的某个字段的结尾可能含有回车符\r,例如:abc\3def\3ghi\r\3jkl\3mno\n
这样的话用readline方法,不管遇到\r或\n或\r\n都会当作行的分隔符,从而造成这一行数据从中间断开。readline中有一个重载的方法可以忽略掉换行\n,但对于回车\r有什么方法能够忽略掉这个字符吗?我尝试过用read一个字符一个字符的读取,然后判断是否为\r,是的话忽略继续读下一个字符,然后遇到\n的话再处理这一行。但文件很大,这样操作太慢了,有什么好的解决办法吗?
这样的话用readline方法,不管遇到\r或\n或\r\n都会当作行的分隔符,从而造成这一行数据从中间断开。readline中有一个重载的方法可以忽略掉换行\n,但对于回车\r有什么方法能够忽略掉这个字符吗?我尝试过用read一个字符一个字符的读取,然后判断是否为\r,是的话忽略继续读下一个字符,然后遇到\n的话再处理这一行。但文件很大,这样操作太慢了,有什么好的解决办法吗?
解决方案 »
- 求助、、哪位高人可以帮我实现一个方法、根据某年某月算出该月除了星期六星期天的天数,也就是工作日的天数
- 兄弟门,为什么这样啊!
- 2个小问题
- 怎样把Excel数据导入到MS-SQL
- 熟悉Ibatis构架的近来看看啊
- 学习JSP,是否还要学习HTML、DHTML、JAVASCRIPT、JAVA、JAVABEAN、SERVLET、STRUTS、JDBC、SQL、WEBSERVR等等呢?!如果是的,我就不学了
- Java如何实现多用户视频?
- 急问:阿,不懂,以前没调试java!
- struts为什么Action类无法定向到指定的页面?郁闷呀!!救命呀!!!
- 在JBuilder 9 中的光标定位错误问题!求解决方法。
- struts1怎么从第一个action里跳转到另一个action
- 使用hibernate最好使用哪种查询方式??
方法二:把整个文件全读进来放到String里,然后用replaceAll()把\r替换掉,再对String进行spilt。
方法三:用记事本打开数据文件->Ctrl+H->\r替换为“ ”-》“全部替换”。
如何替换?用sed吗?实际上这段程序是groovy写的,如果能用linux命令的话直接就用awk了,速度快还没这个问题。。
方法一:这个文件是上游数据库定期生成的,我无法操作。
方法二:文件有16G左右,全读到String里,内存肯定不够。
方法三:16G的文件记事本怎么打的开。。
我写了个类,您看看可以用不??我放在我的blog里了。
http://goro.iteye.com/admin/blogs/1633979