1 package com.tarena.dms; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.Scanner; import javax.swing.JFrame; public class DMSClient { private DMSClientFrame frame; /** * 用于保存日志文件读取位置 */ private File positionFile; /** * 用readLogs 生成的文本日志文件 */ private File textLogFile; /** * 原始的 unix 日志文件 */ private File logFile; public static final int LOG_LENGTH=372; public static final short LOGIN = 7; public static final short LOGOUT =8; private Properties config; private int batch; private File matchedLogFile; private File loginFile; private String serverHost; private int serverPort; /** 2 * 利用构造器初始化对象属性 */ public DMSClient() { //读取配置文件,利用配置文件初始化参数对象 config=new Properties(); try { config.load(new FileInputStream("client.properties")); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } logFile = new File(config.getProperty("log.file")); positionFile=new File(config.getProperty("position.file")); textLogFile=new File(config.getProperty("text.log.file")); batch=Integer.parseInt(config.getProperty("batch")); matchedLogFile=new File(config.getProperty("matched.log.file")); loginFile=new File(config.getProperty("login.log.file")); serverHost=config.getProperty("server.ip"); serverPort=Integer.parseInt(config.getProperty("server.port")); } public void showReadLogsMsg(String msg){ if(frame==null){ System.out.println(msg); }else{ frame.showReadLogsMsg(msg); } } /** * 读取日志文件 */...