Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数据库和文件中多次写入数据_Java_File - Fatal编程技术网

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

Java 在数据库和文件中多次写入数据,java,file,Java,File,我正在从共享地图网络驱动器目录读取文件。在逐行读取文件后,登录到文件夹并插入数据库,然后删除。我发现一些文件多次记录相同的数据,但其他文件没有问题。为什么要记录多次?关闭缓冲区或文件读取或解析方法时有错误吗 public static void main(String[] args) { while (true) { DirectoryFetcher fetch = new DirectoryFetc

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

    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;
    }
publicstaticvoidmain(字符串[]args){
虽然(正确){
DirectoryFetcher fetch=新的DirectoryFetcher();
如果(fetch.hasFile()){
对于(文件:fetch.getFiles()){
试试{
如果(file.isFile()){
布尔标志=fetch.read(文件);
国际单项体育联合会(旗){
delete();
}                          
}
}捕获(例外e){
logger.error(例如getMessage());
}                                   
}
}
}
}
公共类目录获取程序{
公共目录获取程序(){
ServerParams params=Configuration.getConfig().getServerParams();
directory=新文件(params.getLocalDirectory());
if(directory.isDirectory()){
files=directory.listFiles();
}否则{
logger.info(“地图网络驱动器不存在”);
}
}
布尔读取(文件){
BufferedReader br=null;
字符串行=null;
布尔标志=假;
StringBuffer appendMessage=null;
字符串completeMessage=null;
试一试{
if(file.exists()){
br=新的BufferedReader(新的文件读取器(文件));
appendMessage=新的StringBuffer(16384);
而((line=br.readLine())!=null){
appendMessage.append(行);
appendMessage.append('\n');
}            
if(appendMessage!=null){
completeMessage=appendMessage.toString();
}                       
if(completeMessage!=null){
如果(!completeMessage.equals(“”){
flag=new BioRad().parse(completeMessage,file);
}
}
}   
}catch(filenotfounde异常){
logger.error(例如getMessage());
e、 printStackTrace();
}捕获(例外e){
logger.error(例如getMessage());
e、 printStackTrace();
}       
最后{
如果(br!=null){
试一试{
br.close();
}捕获(IOE异常){
logger.error(例如getMessage());
e、 printStackTrace();
}
}
}       
返回标志;
}
}
公共布尔解析(字符串消息,文件){
TestResultParser解析器=null;
String[]records=message.split(记录分割模式);
列表结果=新建ArrayList();
对于(字符串记录:记录){
结果.添加(记录);
}               
logger.info(“结果::”+result.size());
解析器=新的TestResultParser(结果);
返回日志(解析器、文件);
}
私有布尔日志(TestResultParser解析器,文件){
布尔logFlag=false;
如果(解析器!=null){
TestResultMessage report=parser.getTestResultMessage();
//TestResultModel=parser.getTestResultModel();
List List=parser.getTestResultModelList();
logger.info(“列表::”+list.size());
logFlag=(新的DBLogger()).log(列表);
//对于(结果模型:列表){
//if(model!=null&&model.getTestCode()!=null&&model.getTestCode().equals(“”){
//(新的DBLogger()).log(模型);
//                  
//              }
//          }           
如果(report!=null){
if(params.isoutputfile()){
(新文件记录器()).log(报告,文件.getName());
}               
}
}       
返回logFlag;
}

看起来有另一个进程同时写入网络文件。您需要在读取期间锁定该文件。我正在读取该文件并在将其存储到数据库之后进行解析。大多数文件都存储在数据库中,没有重复。