sambindisga 2012-02-07 15:58
浏览 269
已采纳

关于读取文件内容的新问题!

举个例子:
'赵','1234'
'钱','2345''孙','3456'
'李','4567''周','56
78'
……
这是我文件里的内容,一共是五条数据:
赵 1234
钱 2345
孙 3456
李 4567
周 5678
但是在文件中的格式不规范,如上显示。
两条数据之间没有分隔符,如第二条和第三条;
一条数据的某个字段也可能分两行显示,如第五条,

现在我想把这些数据准确的读取出来并插入数据库,请问大家在读取这个地方该怎么编写

  • 写回答

8条回答

  • dingjunfeng 2012-02-07 17:20
    关注

    [code="java"]
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.util.ArrayList;
    import java.util.List;

    public class Reader {
    public static void main(String[] args) throws Exception {
    FileReader fr = new FileReader("D:\input.txt");
    BufferedReader br = new BufferedReader(fr);
    List list = new ArrayList();
    while (br.ready()) {
    String line = br.readLine();
    list.add(line);
    }

        Bean bean = null;
        List result = new ArrayList();
        bean = new Bean();
        int count = 0;
        boolean addname = true;
    
        for (int i = 0; i < list.size(); i++) {
            String line = (String) list.get(i);
            while (line.indexOf("'") != -1) {
                int index = line.indexOf("'");
                count++;
                if (count % 2 == 0) {
                    String tmp = line.substring(0, index);
                    line = line.substring(index + 1);
                    if (addname) {
                        if (bean.name == null) {
                            bean.name = tmp;
                        } else {
                            bean.name += tmp;
                        }
                        addname = false;
                    } else {
                        if (bean.code == null) {
                            bean.code = tmp;
                        } else {
                            bean.code += tmp;
                        }
                        addname = true;
                        result.add(bean);
                        bean = new Bean();
                    }
                } else {
                    line = line.substring(index + 1);
                }
            }
            if (!"".equals(line.trim())) {
                if (addname) {
                    if (bean.name == null) {
                        bean.name = line.trim();
                    } else {
                        bean.name += line.trim();
                    }
                } else {
                    if (bean.code == null) {
                        bean.code = line.trim();
                    } else {
                        bean.code += line.trim();
                    }
                }
            }
        }
    
        for (int i = 0; i < result.size(); i++) {
            bean = (Bean) result.get(i);
            System.out.println(bean.name + "\t" + bean.code);
        }
    }
    

    }

    class Bean {
    public String name;
    public String code;
    }

    [/code]

    一种实现,你看看可没可用吧。
    对于这样的解析,都是有针对性的,不会有很通用的方法,都是遇到了什么处理什么,
    你提到的我处理了,如有问题再联系。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!