生成日志文件,并在0点进行备份(java 实现)

1、生成日志文件(有新数据产生时,将新的数据另起一行追加到日志文件中)


public void wirte(){
        backup();
        List<String> alTag_Real2 = new ArrayList<String>();
        List<String> alVal_Real2 = new ArrayList<String>();
        List<String> alTime_Real2 = new ArrayList<String>();

        StringBuffer sql = new StringBuffer(
                "select xxx from xxx where xxx and tag_name in (");
        for (String tagName : tagNameList2) {
            sql.append("'");
            sql.append(tagName);
            sql.append("',");
        }
        String sqlend2 = sql.substring(0, sql.length() - 1);
        sqlend2 = sqlend2 + ")";

        List<Mini_List> resList = new ArrayList<Mini_List>();
        try {
            Connection conn = DBUtils.feachConnection();
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sqlend2);
            resList = new ArrayList<Mini_List>();
            while (resultSet.next()) {
                Mini_List mini_List3 = new Mini_List();
                mini_List3.setName(resultSet.getString(1));
                mini_List3.setIp_input_value(resultSet.getString(2));
                mini_List3.setIp_input_time(resultSet.getString(3));
                resList.add(mini_List3);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        for (Mini_List mini_List3 : resList) {

            String name = mini_List3.getName();
            mini_List3Time:"+mini_List3.getIp_input_time());
            //上次时间为空   或者   当前位点数据的时间与上次时间不同 
            if (null == htLastTime2.get(name)
                    || !htLastTime2.get(name).toString().equals(
                            mini_List3.getIp_input_time().toString())) {

                htLastTime2.put(name,mini_List3.getIp_input_time());
                Double value = mini_List3.getIp_input_value() == "" ? Double.NaN : Double.parseDouble(mini_List3.getIp_input_value());

                if (!Double.isNaN(value)){
                    //实时数据列表增加数据
                    alTag_Real2.add(name);
                    alVal_Real2.add(mini_List3.getIp_input_value());
                    alTime_Real2.add(mini_List3.getIp_input_time());
                }

            }
        }


        for (int i = 0; i < alTag_Real2.size()-1; i++) {
            if(!new File(path).exists()){
                new File(path).mkdirs();
            }
            File file  = new File(path+alTag_Real2.toArray()[i]+".txt");
            if(!file.exists()){
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    logger.info("创建"+alTag_Real2.toArray()[i]+"点位文件失败");
                }
            }
            try {
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(new FileOutputStream(file, true)));
                writer.write(alTag_Real2.toArray()[i]+"       "+alTime_Real2.toArray()[i]+"       "+alVal_Real2.toArray()[i]+"       "+"Good");
                writer.newLine();
                writer.flush();
            } catch (FileNotFoundException e) {
                logger.info("写入"+alTag_Real2.toArray()[i]+"点位文件失败");
            } catch (IOException e) {
                logger.info("写入"+alTag_Real2.toArray()[i]+"点位文件失败");
            }
        }
    }

2、在每天的0点备份(备份数据超过15天后删除超出部分的数据)


public static void backup() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateformat = sdf.format(date.getTime() - 24 * 60 * 60 * 1000);//获取昨天的日期
        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        if ((calendar.get(Calendar.HOUR) == 0) && (calendar.get(Calendar.MINUTE) == 0)) {
            List<String> files = new ArrayList<String>();
            List<String> dirFile = new ArrayList<String>();
            List<String> toDel = new ArrayList<String>();
            File dir = new File(path);
            File[] allFile = dir.listFiles();

            for (File name : allFile) {
                if (name.isFile()) {
                    files.add(name.getName());
                } else {
                    dirFile.add(name.getPath());
                }
            }


            // 执行删除15天之前的数据
            if (dirFile.size() > 15) {
                int index = Integer.parseInt(dateformat);
                for (int i = 16; i < dirFile.size()+2; i++){
                    String before = sdf.format(date.getTime() - i * 24 * 60 * 60 * 1000);//获取第 i天的日期
                    if (new File(path + "sj" + before).exists()) toDel.add(path + "sj" + before);
                }
                for (String file : toDel) {
                    File file2 = new File(file);
                    File[] listFiles = file2.listFiles();
                    if(listFiles.length>0){
                        for (File file3 : listFiles) {
                            file3.delete();
                        }
                    }
                    file2.delete();
                }
            }

            // 执行备份
            File file4 = new File(path + "sj" + dateformat);
            if(!file4.exists()){
                file4.mkdirs();
                for (String string : files) {// file.renameTo(new File("PATH\OF\THE\DISTINATION")) 将文件移动到指定
                    new File(path + string).renameTo(new File(path + "sj" + dateformat + "\\" + string));
                }
            }

        }
    }

3、主要代码之外部分


    // 位点上一时刻记录
    private static Hashtable<String,String> htLastTime2 = new Hashtable<String,String>();
    // 获取文本数据存放路径
    private static String path;
    static { 
        Properties prop = new Properties(); 
        InputStream in = Object.class.getResourceAsStream("/file.properties"); //   path=X://zzz//
        try { 
            prop.load(in); 
            path = prop.getProperty("path").trim(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值