现在做一个程序 需要对cvs格式的txt文件 操作 读取其中的数据 处理后再写入另一个文件 
当测试文件为20K左右时 程序运行正常 可是如果测试数据很多 现在用的 是6m的一个txt文件 原来的程序就出现问题 读取出来的数据都是乱码 请教如何处理 

解决方案 »

  1.   

    楼主把CVS的内容都用一个有效的记录填充,如果在几十K之内没问题,看看在几十M的时候有没有问题。如果真有数量限制,也可以测出来究竟临界值是多大。然后再说其余的。
      

  2.   

    用 stream 一部分一部分的读。
      

  3.   

    肯定有问题的 下边是文件的内容 他是一个cvs的txt文件 要读取数据进行处理 按行读取  用stream 怎么才能分割的正好的呢  搞不定 那位帮忙 谢谢1/10/2006 00:04:09 86-29-88986203 86-29-88986203 陕西 西安 86-29-81944866 陕西 西安 Outgoing Message CTC(PHS) 35 Call was answered
    01/10/2006 00:04:50 86-29-88986203 86-29-81944866 陕西 西安 86-29-88986203 陕西 西安 Reply CTC(PHS) 17 Call was answered
    01/10/2006 00:16:02 86-29-81265732 86-29-81265732 陕西 西安 86-29-83079593 陕西 西安 Outgoing Message CTC(PHS) 24 Call was answered
    01/10/2006 00:18:18 86-29-81265732 86-29-81265732 陕西 西安 86-29-81068734 陕西 西安 Outgoing Message CTC(PHS) 33 Call was answered
      

  4.   

    1/10/2006 00:04:09 86-29-88986203 86-29-88986203 陕西 西安 86-29-81944866 陕西 西安 Outgoing Message CTC(PHS) 35 Call was answered这个是完整的一样 数据用tab分割的
      

  5.   

    用BufferedReader,按字符读!
    不要用Stream,InputStream是按字节读的,所以有乱码了
      

  6.   

    File file = new File("1.txt");
    BufferedReader in = new BufferedReader(new InputStreamReader(
    new FileInputStream(file)));
    String line = in.readLine();我这么读的
      

  7.   

    试试这个:
    BufferedReader in=new BufferedReader(new FileReader("1.txt"));
      

  8.   

    我认为应该根据换行的标记(lz好像用的是TAB)来确定每一行的内容,读出来,处理,然后下一行这样速度不会损失,也会占用最小的内存,我的想法大概是
    final int BUFFER_SIZE = 256;
    final String ENCODING = "UTF-8";
    InputStream is = getClass().getResourceAsStream("cvs.txt");
    byte b = -1;
    byte newLine = '\t';
    byte[] buffer = new byte[BUFFER_SIZE];
    String content = null;
    int counter = 0;
    try {
    while ((b = (byte) is.read()) != -1) {
    if (b != newLine) {
    buffer[counter++] = b;
    }else{
    //已经到了此行的结尾,可以对buffer中的数据进行处理了
    content = new String(buffer,0,counter,ENCODING);
    //然后处理
    }
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
      

  9.   

    6m 真的不算大.如果txt规定了具体格式的话(如 一行一条记录之类的)建议用BufferedReader读不然,二进制的只能用InputStream读了.另外,乱码的话,感觉是你一次文件独得不完全,造成解码失败.
      

  10.   

    6M很小的。用BUFFER吧。然后你乱码可能分割什么的问题
    ------ 以下是签名 ------
    SoftDN.com, 提供免费的项目管理平台:SVN仓库、需求管理、BUG跟踪、任务管理、在线论坛、网站空间、项目存储及完整的备份等。欢迎网友光临建立项目,开创自己的梦想。
    地址:http://www.softdn.com   http://www.softdn.cn
      

  11.   

    新的问题 
    文件是unicode 格式的 这个就是引起乱码的原因 请问如果读取才可以正确显示汉字呢 还有读取后 处理后 也写入一个unicode 中 
    请大家指导下 谢谢
      

  12.   

    6M是不大,你们最大读的是多大,上百M的话,读起来很慢,有没有好的办法。有什么来读比较好,还有可能是上G的文件怎么读
      

  13.   

    我的是20M 的没搞出了,结果就……  很严重……
    我那个是比较ip  txt中是ip段