Newer
Older
CasicTimeGuard / src / main / java / com / casic / swing / utils / LogToFile.java
package com.casic.swing.utils;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Calendar;

/**
 * @author Administrator
 */
public class LogToFile {
    public static void save(String log) {
        File rootDir = Constant.intRootDir();
        File logFile = new File(rootDir + File.separator + "update.log");
        //写入配置文件
        try {
            FileOutputStream fos;
            if (!logFile.exists()) {
                logFile.createNewFile();
                //首次写入获取
                fos = new FileOutputStream(logFile);
            } else {
                //如果文件已存在,那么就在文件末尾追加写入
                fos = new FileOutputStream(logFile, true);
            }
            OutputStreamWriter outStream = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
            outStream.write(log);
            outStream.write("\r\n");
            //写入完成关闭流
            outStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String load() {
        try {
            File rootDir = Constant.intRootDir();
            File logFile = new File(rootDir + File.separator + "update.log");
            FileInputStream inputStream = new FileInputStream(logFile);
            InputStreamReader streamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(streamReader);
            StringBuilder data = new StringBuilder();
            String s;
            while ((s = bufferedReader.readLine()) != null) {
                data.append(s);
                data.append("\r\n");
            }
            if ("".equals(data.toString())) {
                return "";
            }
            String result = data.toString().split("\r\n")[0];
            /**
             * 5 Jan 11:20:24 ntpdate[807910]: adjust time server 114.118.7.161 offset -0.004064 sec
             * 5 Jan 11:24:06 ntpdate[824403]: no server suitable for synchronization found
             * */
            String ntpDate = result.split("ntpdate")[0];
            String[] split = ntpDate.split(" ");

            Calendar date = Calendar.getInstance();
            String year = String.valueOf(date.get(Calendar.YEAR));
            return year + "-" + monthConvert(split[1]) + "-" + dayConvert(split[0]) + " " + split[2];
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    private static String monthConvert(String engMonth) {
        switch (engMonth) {
            case "Jan":
                return "01";
            case "Feb":
                return "02";
            case "Mar":
                return "03";
            case "Apr":
                return "04";
            case "May":
                return "05";
            case "Jun":
                return "06";
            case "Jul":
                return "07";
            case "Aug":
                return "08";
            case "Sept":
                return "09";
            case "Oct":
                return "10";
            case "Nov":
                return "11";
            case "Dec":
                return "12";
            default:
                return "00";
        }
    }

    private static String dayConvert(String day) {
        if (Integer.parseInt(day) < 10) {
            return "0" + day;
        } else {
            return day;
        }
    }
}