⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertyset.java

📁 wiziqi
💻 JAVA
字号:
package iniset;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import iniset.finals.SetDatas;

/**
 * 各种设置类,通过从文件当中获取设置信息,以单子模式实现
 * 
 * @author B.Lee
 *
 */
public class PropertySet {
  /** 是否有音效 */
  private int sound;

  /** 是否有背景音乐 */
  private int music;

  /** 人与人下还是人与电脑下 */
  private int model;

  /** 黑棋先下还是白棋先下 */
  private int first;

  /** 是否允许悔棋 */
  private int regret;
  /**
   * 本类的一个实例,用来实现单子模式
   */
  private static PropertySet propertySet = null;

  /**
   * 构造函数,初始化各属性值
   *
   */
  private PropertySet() {
    loadPropertySet();
  }
  
  public static PropertySet getPropertySet() {
    if(propertySet == null) {
      propertySet = new PropertySet();
      return propertySet;
    } else {
      return propertySet;
    }
  }
  
  /**
   * 从文件当中读取上一次保存的设置信息并使之生效 如果文件不存在则将所有的信息置为默认值
   * 
   * @return 无
   */
  private void loadPropertySet() {
    Properties properties = null;
    FileInputStream read = null;

    String soundTem = "";
    String musicTem = "";
    String modelTem = "";
    String firstTem = "";
    String regretTem = "";

    // 以下代码从文件当中获取信息
    try {
      read = new FileInputStream(new File("five.property"));
      properties = new Properties();
      properties.load(read);

      // 从文件当中读取信息,如果文件当中某个key被删除则该key置为默认值
      soundTem = properties.getProperty("sound", Integer
          .toString(SetDatas.SOUND_ON));
      musicTem = properties.getProperty("music", Integer
          .toString(SetDatas.MUSIC_ON));
      modelTem = properties.getProperty("model", Integer
          .toString(SetDatas.PEOPLE_VS_COMPUTER));
      firstTem = properties.getProperty("first", Integer
          .toString(SetDatas.BLACK_FIRST));
      regretTem = properties.getProperty("regret", Integer
          .toString(SetDatas.REGRET_ABLE));
    } catch (IOException ex) {
      // 如果文件不存在则置为默认值
      soundTem = Integer.toString(SetDatas.SOUND_ON);
      musicTem = Integer.toString(SetDatas.MUSIC_ON);
      modelTem = Integer.toString(SetDatas.PEOPLE_VS_COMPUTER);
      firstTem = Integer.toString(SetDatas.BLACK_FIRST);
      regretTem = Integer.toString(SetDatas.REGRET_ABLE);
    }

    // 以下代码将从文件当中获取的信息转化为程序能够识别的值
    try {
      this.setSound(Integer.parseInt(soundTem));
      this.setMusic(Integer.parseInt(musicTem));
      this.setModel(Integer.parseInt(modelTem));
      this.setFirst(Integer.parseInt(firstTem));
      this.setRegret(Integer.parseInt(regretTem));
    } catch (NumberFormatException ex) {// 如果文件当中的数值被人为改变可能会抛出此异常
      this.setSound(SetDatas.SOUND_ON);
      this.setMusic(SetDatas.MUSIC_ON);
      this.setModel(SetDatas.PEOPLE_VS_COMPUTER);
      this.setFirst(SetDatas.BLACK_FIRST);
      this.setRegret(SetDatas.REGRET_ABLE);
    }
  }

  /**
   * 将设置信息保存到文件当中
   * 
   * @return true 保存成功 
   *          false 保存失败
   */
  public boolean savePropertySet() {
    boolean flag = false;
    Properties properties = null;
    FileOutputStream save = null;
    try {
      save = new FileOutputStream(new File("five.property"));
      properties = new Properties();
      properties.setProperty("sound", Integer.toString(sound));
      properties.setProperty("music", Integer.toString(music));
      properties.setProperty("model", Integer.toString(model));
      properties.setProperty("first", Integer.toString(first));
      properties.setProperty("regret", Integer.toString(regret));

      properties.store(save, "The last setting:\r\nAuthor B.Lee");
      flag = true;
    } catch (IOException ex) {
      flag = false;// 发生错误,保存属性失败
    }
    return flag;
  }

  public int getFirst() {
    return first;
  }

  public void setFirst(int first) {
    if (first != 0 && first != 1) {
      first = 1;
    } else {
      this.first = first;
    }
  }

  public int getModel() {
    return model;
  }

  public void setModel(int model) {
    if (model != 0 && model != 1) {
      this.model = 1;
    } else {
      this.model = model;
    }
  }

  public int getMusic() {
    return music;
  }

  public void setMusic(int music) {
    if (music != 0 && music != 1) {
      this.music = 1;
    } else {
      this.music = music;
    }
  }

  public int getRegret() {
    return regret;
  }

  public void setRegret(int regret) {
    if (regret != 0 && regret != 1) {
      this.regret = 1;
    } else {
      this.regret = regret;
    }
  }

  public int getSound() {
    return sound;
  }

  public void setSound(int sound) {
    if (sound != 0 && sound != 1) {
      this.sound = 1;
    } else {
      this.sound = sound;
    }
  }
  
//  //test
//  public static void main(String[] args) {
//    PropertySet ss = new PropertySet();
//    ss.savePropertySet();
//  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -