在数据库和文件中多次写入数据

时间:2012-12-30 06:34:34

标签: java file

我正在从共享地图网络驱动器目录中读取文件。逐行读取文件后登录到文件夹并插入数据库然后删除。我得到一些文件记录相同的数据超过一次但其他文件都没问题。为什么它记录多次?关闭缓冲区或文件读取或解析方法有什么错误吗?

    public static void main(String[] args) {        
            while (true) {        
                DirectoryFetcher fetch = new DirectoryFetcher();
                if (fetch.hasFile()) {              
                    for(File file:fetch.getFiles()){
                        try {                       
                            if(file.isFile()){                  

                                boolean flag = fetch.read(file);
                                 if(flag){
                                    file.delete();
                                 }                          

                              }

                        } catch (Exception e) {
                            logger.error(e.getMessage());
                            }                                   
                    }

                }
            }
        }

public class DirectoryFetcher {     

    public DirectoryFetcher() {
        ServerParams params = Configuration.getConfig().getServerParams();
        directory = new File(params.getLocalDirectory());
        if (directory.isDirectory()) {
            files = directory.listFiles();
        }else{

            logger.info("Map Network Drive is not Exist");
        }

    }

    boolean read(File file){
            BufferedReader br = null;
            String line = null;
            boolean flag = false;
             StringBuffer appendMessage = null;
             String completeMessage = null;
            try {
                if(file.exists()){
                    br = new BufferedReader(new FileReader(file));
                     appendMessage = new StringBuffer(16384); 
                     while ((line = br.readLine()) != null) {                
                         appendMessage.append(line);
                         appendMessage.append('\n');                 
                    }            
                     if(appendMessage != null){
                         completeMessage = appendMessage.toString();
                     }                       


                    if (completeMessage != null) {
                        if (!completeMessage.equals("")) {              

                            flag = new BioRad().parse(completeMessage,file);                        

                        }
                    }
                }   
            } catch (FileNotFoundException e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }catch (Exception e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }       
            finally{

                if(br != null){
                    try {

                        br.close();


                    } catch (IOException e) {
                        logger.error(e.getMessage());
                        e.printStackTrace();
                    }
                }
            }       


            return  flag ;
        }
}


public boolean parse(String message,File file) {        
        TestResultParser parser = null;     
        String[] records = message.split(RECORD_SPILIT_PATTERN);
            List<String> result = new ArrayList<String>();
            for (String record : records) {             
                result.add(record);
            }               
            logger.info("result:: "+result.size() );            
            parser = new TestResultParser(result);      
        return log(parser,file );
    }

    private boolean log(TestResultParser parser,File file) {
        boolean logFlag = false;        
        if(parser != null) {            
            TestResultMessage report = parser.getTestResultMessage();
            //TestResultModel   model = parser.getTestResultModel();
            List<Result> list = parser.getTestResultModelList();    
            logger.info("list:: "+ list.size());            
            logFlag  = (new DBLogger()).log(list);

//          for(Result model:list){             
//              if(model != null && model.getTestCode() != null && !model.getTestCode().equals("")) {
//                  (new DBLogger()).log(model);
//                  
//              }
//          }           

            if(report != null) {            
                if (params.isOutputOnFile()) {
                    (new FileLogger()).log(report,file.getName());
                }               
            }

        }       

        return logFlag;
    }

0 个答案:

没有答案