项目需求是这样的;不同的企业客户提供的txt文本数据不同,比如下面两种格式1.txt2,4717336
-- 上面这行必须放在第一行,数据依次为:记录总数(不包括首行和注释行),到账金额总计
-- 供款确认日期,年金计划号,年金计划名称         ,到账金额
   09/30/2005  ,    000001,企业年金集成计划A    ,   24408
   09/30/2005  ,    000001,企业年金集成计划B    , 4692928
===============================================================================
2.txt-- 供款确认日期,年金计划号,年金计划名称         ,到账金额
   09/30/2005  ,    000001,企业年金集成计划A    ,   24408
   09/30/2005  ,    000001,企业年金集成计划B    , 4692928
这只是其中两中,文本格式可能有很多种。现在的想法是把TXT文件格式定义记录在数据库,然后不同文件上传后,去取读取格式,按预定义的格式来读取文件,并做校验。 但现在理不清该从那里下手,感觉这个自由度太高,没办法定义好一个通用的方法。那位大侠有类似经验,忘指教。

解决方案 »

  1.   

    1.txt 和 2.txt的格式好像一样啊?
      

  2.   

    先写一个抽象类:
    abstract class TextReader{
        //这里有一大堆方法,这些方法可以调用doReadText()方法来作处理
        public void doSomething(){
            doReadText();
            ....
        }
        abstract protected void doReadText();//这是一个抽象方法
    }
    然后对应每一种格式的text来继承。
    class CompanyBTextReader extends TextReader{
        protected void doReadText(){
           //实现自己的读法
        }
    }
    class CompanyCTextReader extends TextReader{
        protected void doReadText(){
          //实现自己的读法
        }
    }
    使用的时候:
    TextReader reader = new CompanyATextReader();
    reader.doSomething();//客户端感觉不到用的是哪个读取策略。
    TextReader reader = new ComapanyBTextReader();
    reader.doSomething();设计模式之模版模式
      

  3.   

    我现在想法是分三步走。
    1、读各种TXT文件:写一个抽象类,定义好通用的TXT文件读取方法,然后针对不同的TXT文件衍生不同的FileParse读取。2、按行绑定数据到DTO对象中,并做验证3、每1000行进行数据提交不知道这样的思路对不对,那位有具体实现吗?