package set; import java.io.*; import java.util.Properties; public class Setsys { private String mowerId; private String cuttingWidth; private String simCardNumber; private String handheldMarkerId; private String firmwareVersion; private String appVersion; private static final String PROPERTIES_FILE = "set.properties"; // 无参构造方法 public Setsys() { } // 带参构造方法 public Setsys(String mowerId, String cuttingWidth, String simCardNumber, String handheldMarkerId, String firmwareVersion, String appVersion) { this.mowerId = mowerId; this.cuttingWidth = cuttingWidth; this.simCardNumber = simCardNumber; this.handheldMarkerId = handheldMarkerId; this.firmwareVersion = firmwareVersion; this.appVersion = appVersion; } // Getter和Setter方法 public String getMowerId() { return mowerId; } public void setMowerId(String mowerId) { this.mowerId = mowerId; } public String getCuttingWidth() { return cuttingWidth; } public void setCuttingWidth(String cuttingWidth) { this.cuttingWidth = cuttingWidth; } public String getSimCardNumber() { return simCardNumber; } public void setSimCardNumber(String simCardNumber) { this.simCardNumber = simCardNumber; } public String getHandheldMarkerId() { return handheldMarkerId; } public void setHandheldMarkerId(String handheldMarkerId) { this.handheldMarkerId = handheldMarkerId; } public String getFirmwareVersion() { return firmwareVersion; } public void setFirmwareVersion(String firmwareVersion) { this.firmwareVersion = firmwareVersion; } public String getAppVersion() { return appVersion; } public void setAppVersion(String appVersion) { this.appVersion = appVersion; } /** * 初始化方法 - 从properties文件读取数据 * 如果属性值为-1,表示没有值,设置为null */ public void initializeFromProperties() { Properties props = new Properties(); try (FileInputStream input = new FileInputStream(PROPERTIES_FILE)) { props.load(input); // 读取属性值,如果为-1则设置为null this.mowerId = "-1".equals(props.getProperty("mowerId")) ? null : props.getProperty("mowerId"); this.cuttingWidth = "-1".equals(props.getProperty("cuttingWidth")) ? null : props.getProperty("cuttingWidth"); this.simCardNumber = "-1".equals(props.getProperty("simCardNumber")) ? null : props.getProperty("simCardNumber"); this.handheldMarkerId = "-1".equals(props.getProperty("handheldMarkerId")) ? null : props.getProperty("handheldMarkerId"); this.firmwareVersion = "-1".equals(props.getProperty("firmwareVersion")) ? null : props.getProperty("firmwareVersion"); this.appVersion = "-1".equals(props.getProperty("appVersion")) ? null : props.getProperty("appVersion"); System.out.println("数据初始化完成"); } catch (FileNotFoundException e) { System.err.println("属性文件未找到: " + PROPERTIES_FILE); // 文件不存在时,设置所有属性为null setAllPropertiesToNull(); } catch (IOException e) { System.err.println("读取属性文件时出错: " + e.getMessage()); setAllPropertiesToNull(); } } /** * 更新属性值并同步到properties文件 * @param propertyName 属性名 * @param value 属性值 * @return 是否更新成功 */ public boolean updateProperty(String propertyName, String value) { // 更新内存中的属性值 switch (propertyName) { case "mowerId": this.mowerId = value; break; case "cuttingWidth": this.cuttingWidth = value; break; case "simCardNumber": this.simCardNumber = value; break; case "handheldMarkerId": this.handheldMarkerId = value; break; case "firmwareVersion": this.firmwareVersion = value; break; case "appVersion": this.appVersion = value; break; default: System.err.println("未知的属性名: " + propertyName); return false; } // 更新properties文件 return updatePropertiesFile(propertyName, value); } /** * 更新properties文件中的属性值 */ private boolean updatePropertiesFile(String propertyName, String value) { Properties props = new Properties(); try (FileInputStream input = new FileInputStream(PROPERTIES_FILE)) { // 先加载现有属性 props.load(input); } catch (IOException e) { System.err.println("读取属性文件失败: " + e.getMessage()); } // 设置新值 props.setProperty(propertyName, value); // 写回文件 try (FileOutputStream output = new FileOutputStream(PROPERTIES_FILE)) { props.store(output, "Mower Configuration Properties - Updated"); System.out.println("属性 " + propertyName + " 已更新为: " + value); return true; } catch (IOException e) { System.err.println("更新属性文件失败: " + e.getMessage()); return false; } } /** * 设置所有属性为null */ private void setAllPropertiesToNull() { this.mowerId = null; this.cuttingWidth = null; this.simCardNumber = null; this.handheldMarkerId = null; this.firmwareVersion = null; this.appVersion = null; } /** * 显示当前所有属性值 */ public void displayProperties() { System.out.println("当前属性值:"); System.out.println("mowerId: " + (mowerId != null ? mowerId : "未设置")); System.out.println("cuttingWidth: " + (cuttingWidth != null ? cuttingWidth : "未设置")); System.out.println("simCardNumber: " + (simCardNumber != null ? simCardNumber : "未设置")); System.out.println("handheldMarkerId: " + (handheldMarkerId != null ? handheldMarkerId : "未设置")); System.out.println("firmwareVersion: " + (firmwareVersion != null ? firmwareVersion : "未设置")); System.out.println("appVersion: " + (appVersion != null ? appVersion : "未设置")); } // 根据set.properties中的键名获取对应的值,没有或为-1时返回null public static String getPropertyValue(String key) { if (key == null || key.trim().isEmpty()) { return null; } Properties props = new Properties(); try (FileInputStream input = new FileInputStream(PROPERTIES_FILE)) { props.load(input); String value = props.getProperty(key); if (value == null || "-1".equals(value)) { return null; } return value; } catch (FileNotFoundException e) { System.err.println("属性文件未找到: " + PROPERTIES_FILE); } catch (IOException e) { System.err.println("读取属性文件时出错: " + e.getMessage()); } return null; } @Override public String toString() { return "Set{" + "mowerId='" + mowerId + '\'' + ", cuttingWidth='" + cuttingWidth + '\'' + ", simCardNumber='" + simCardNumber + '\'' + ", handheldMarkerId='" + handheldMarkerId + '\'' + ", firmwareVersion='" + firmwareVersion + '\'' + ", appVersion='" + appVersion + '\'' + '}'; } }