要求实现读取超大文件(2G左右),并找到指定的字符串/
1.首先这么大的文件,怎么生成呢?
2.怎样读取呢?肯定会死机啊
3.语言或哪种环境好呢? 各位给支个招
1.首先这么大的文件,怎么生成呢?
2.怎样读取呢?肯定会死机啊
3.语言或哪种环境好呢? 各位给支个招
解决方案 »
- 随机生成不同的MAC
- 能不能做一个函数返回网页当前焦点的绝对位置
- 关于线程结束和主程之间的传值问题,急!!!
- 我们应否尊重不尊重编程的项目经理?
- 请问各位商业上的人事,java软件开发用的是Swing可视化窗口开发还是用class类开发
- 一个小程序,想用线程实现在jpanel上搞出一行button,但是我的程序做出来后button不会动,程序改了三小时了,未果,请高指点江山
- 为什么我按回车没有反应?
- 一个很简单的问题,希望看到贴子的都进来看看
- JAVA中 volatile 好像没有存在的必要吧
- jdk7 和jdk8安装后为什么没有doc文件夹?
- 请问有没有中文的类似Professional Java JDK 6的JDK学习资料啊
- 关于静态变量和多线程
如果只查找一个字符串的话,可以采用模式匹配,读一遍文件的内容即可查找到所要找的字符串。
当然,读操作一定要选用带缓冲区的Reader。自我感觉,问题的关键是算法,其次才是环境。
我曾经用BufferedReader包了FileReader去读一个2-3G的文件 几行下来没出什么问题 要是全文搜索我倒是没试过
偶实现过5G左右文件的读取,没有出问题
1.用循环生成文件
你就用 PrintWriter类的println方法,一行行的写出来罗
循环个60万次,生成的txt文件都好几个G了2.用BufferedReader类的readLine方法再一行行读出
偶当时是读到一个ArrayList里的,读一段,把这个ArrayList给清空一下
循环把文件读完,你可以边读边查找3.语言和环境?
没太大区别吧,偶当时是java实现的
其他的语言也应该能够实现的
人家数据库文件有几十个G,频繁读取,也没有听说过内存不够用的
不好说
要看你的系统配置
包括jvm的heapsize等
楼上是说用MappedByteBuffer类吧
不过偶没有用过,不知道效果如何其实,还是不建议开线程的,因为线程本身就是十分耗资源的
在加上io,jvm会吃不消偶主要是扩充heapsize,-Xmx1024m 就是把分配给jvm的内存设为1G
当然这要看你机器的性能了
如果2G的内存,还勉强可以这样设