首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请问读取比较大的txt文件的问题 [已结帖,结帖人:liminyes]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-23 12:03:02 楼主
    由于一直没弄明白这里面的数据库所以现在就一直在用txt来当数据库,可是在一些差点的手机上txt文本过大的话就会暴掉,想一边读一边扔,可是却没想到办法,请哪们大大帮我看看应该怎么做可以打开5M以上的txt文件!!


    // 从文本资源中装入符串
    protected boolean loadFromResource(String urlTxt) {
    String strRet = null;
    try {

    // 从资源中读入文本文件,内容见参考书 3.6 节
    InputStream is = this.getClass().getResourceAsStream(urlTxt);



    byte[] datain = new byte[1024];
    //is.read(datain);
    is.skip(1024);
    is.read(datain, 0,1024);

    strRet = new String(datain, "UTF-8");
                          //多重复几次在这个转成文本就会挂了,谢谢了啊
    is.close();
    is = null;
    System.out.println(strRet);


    } catch (Exception e) {
    System.out.println("错误");
    }
    if (strRet != null) {
    //splitResult(arrayLines, strRet);
    // System.out.println(arrayLines.size());
    return true;
    }
    return false;
    }
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shengli_liao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 15:08:561楼 得分:5
    没试过,共同学习...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      9

    发表于:2008-08-24 06:32:472楼 得分:10
    使用有限内存处理,读取超大文本文件 参考这个吧
    Java code
    File file = new File("filename"); BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file),10*1024*1024); // 用10M的缓冲读取

    http://www.java2000.net/p188
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bianmazi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 10:20:103楼 得分:10
    楼上的没试过.有时间去试试看.然后把结果告诉你
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • energetic_xiaoyu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 11:28:524楼 得分:5
    j2me中没有FileInputStream的吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      2

      9

    发表于:2008-08-24 11:50:555楼 得分:10
    strRet = new String(datain, "UTF-8");
                          //多重复几次在这个转成文本就会挂了,谢谢了啊
    估计是手机的垃圾回收不行。这里频繁的产生字符串,且没有被很快的回收,很容易造成内存溢出的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bianmazi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 13:58:046楼 得分:10
    J2ME 不能使用File file = new File("filename");
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 14:25:087楼 得分:0
    难道在
    // 从资源中读入文本文件,内容见参考书 3.6 节
    InputStream is = this.getClass().getResourceAsStream(urlTxt);

    这里的时候就已经占内存了?我今天试了一下把那个TXT弄了10M,结果一到这就挂了.....
    郁闷ing
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 15:11:248楼 得分:0
    我现在是把TXT分割成小的了再用的,那有的电子书一下就能打开手机里面5M大的文本是怎么弄的啊,我看他们的搜索功能都不慢啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bianmazi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 08:54:389楼 得分:30
    把文件写成二进制去读取操作.一次不要读取太大的文件.手机内存有限.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Harvey_He
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 17:59:3410楼 得分:10
    建议化简成二进制文件
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 10:34:5711楼 得分:0
    读取二进制文件应该也有
    // 从资源中读入文本文件,内容见参考书 3.6 节
    InputStream is = this.getClass().getResourceAsStream(urlTxt);
    这句吧,我试了一下只要文件到10M大在这就挂了,流在这时会有多少东西进内存?有办法解决没有?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yanhan0615
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-27 16:43:5312楼 得分:5
    引用 2 楼 java2000_net 的回复:
    使用有限内存处理,读取超大文本文件 参考这个吧

    Java codeFile file = new File("filename");
    BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file),10*1024*1024); // 用10M的缓冲读取


    http://www.java2000.net/p188


    拜托,楼主,这位仁兄说的是在pc上的处理,在手机上就是去掉一个1024,用10K来做
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 17:36:3813楼 得分:0
    引用 12 楼 yanhan0615 的回复:
    引用 2 楼 java2000_net 的回复:
    使用有限内存处理,读取超大文本文件 参考这个吧

    Java codeFile file = new File("filename");
    BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file),10*1024*1024); // 用10M的缓冲读取


    http://www.java2000.net/p188


    拜托,楼主,这位仁兄说的是在pc上的处理,在手机上就是去掉一个1024,用10K来做



    我知道,那个不是j2me的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yanhan0615
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 18:50:3714楼 得分:5
    我囧~◎¥¥%#

    你既然是在pc上的就简单了,你不要把文件打包内,直接使用File来读取,肯定没问题的
    并且,在InputStream is = this.getClass().getResourceAsStream(urlTxt);
    这里,占用的内存对pc来说可以忽略不计的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 22:40:2815楼 得分:0
    引用 14 楼 yanhan0615 的回复:
    我囧~◎¥¥%#

    你既然是在pc上的就简单了,你不要把文件打包内,直接使用File来读取,肯定没问题的
    并且,在InputStream is = this.getClass().getResourceAsStream(urlTxt);
    这里,占用的内存对pc来说可以忽略不计的


    兄弟拜托,是二楼的给的是PC上用的,我是想找到手机上用大文本的方法啊!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-31 03:41:3616楼 得分:0
    呵呵,换成读取手机里面的TXT文件,我最大的加载了一个20M的,纯属实验!可能资源文件里的流一挂上了就多多少少的会占点内存吧........
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liminyes
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-31 03:41:5617楼 得分:0
    呵呵,换成读取手机里面的TXT文件,我最大的加载了一个20M的,纯属实验!可能资源文件里的流一挂上了就多多少少的会占点内存吧........
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved