Properties 配置檔案類
介紹
Properties(配置檔案類):主要用於生成配置檔案與讀取配置檔案的資訊。屬於集合體系的類,繼承了Hashtable類,實現了Map介面
因為 Properties 繼承於 Hashtable,所以可對 Properties 物件應用 put 和 putAll 方法。但不建議使用這兩個方法,因為它們允許呼叫者插入其鍵或值不是 String 的項。相反,應該使用 setProperty 方法。如果在“不安全”的 Properties 物件(即包含非 String 的鍵或值)上呼叫 store 或 save 方法,則該呼叫將失敗。
類似地,如果在“不安全”的 Properties 物件(即包含非 String 的鍵)上呼叫 propertyNames 或 list 方法,則該呼叫將失敗。
Properties要注意的細節:
1.如果配置檔案的資訊一旦使用了中文,那麼在使用store方法生成配置檔案時只能使用字元流生成配置檔案,如果使用位元組流,預設是使用IOS8859-1編碼,這是會出現亂碼
2.如果properties中的內容發生了變化,一定重新使用properties生成配置檔案。否則配置檔案資訊將不會發生變化
例子
`
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
public class Propertiesee {
public static void main(String[] args) throws FileNotFoundException, IOException { createproperties(); readProperties(); } //儲存配置檔案資訊 public static void createproperties() throws FileNotFoundException, IOException { //建立properties物件 Properties properties=new Properties(); properties.setProperty("guwa", "123"); properties.setProperty("gousheng", "456"); properties.setProperty("孫悟空", "789"); //遍歷properties
// Set
需求:使用PRIPERties實現本軟體只能執行三次,超過三次提示購買正版,退出jvm
public class TestP {
public static void main(String[] args) throws IOException {
//配置檔案,記錄次數
File file=new File("E:\\t\\count.properties");
if(!file.exists()){
//如果不存在,就建立
file.createNewFile();
}
//建立Properties物件
Properties properties=new Properties();
//把配置資訊新增到物件中
properties.load(new FileInputStream(file));
int count=0;//用來儲存讀取的次數
//讀取配置檔案的執行次數
String value=properties.getProperty("count");
if(value!=null){
count=Integer.parseInt(value);
}
//判斷次數是不是達到了三次
if(count==3){
System.out.println("你已經使用三次了,請購買正版");
System.exit(0);
}
count++;
System.out.println("已經私用本軟體第"+count+"次");
properties.setProperty("count", count+"");
//應該放在哪裡FileOutputStreamout=new FileOutputStream(file)?
//因為在new FileOutputStream()有清空的作用,所以在load方法之後,或者在後面加true,加true的話,資訊是多次寫入,不會先清空在寫入
//使用properties生成一個配置檔案
properties.store(new FileOutputStream(file), "runtimes");;
System.out.println("QQ程式");
}
}
“`