1
/*
2
操作屬性文件,可以為我們的程序帶來更方便的移植性,下面是一個示例,可以讀、寫、更改屬性
3
讀采用了兩種方式,一種是采用Properties類,另外一種是采用資源綁定類ResourceBundle類,
4
下面是源程序,里面有詳細的注釋:
5
*/
6
import java.io.FileInputStream;
7
import java.io.FileOutputStream;
8
import java.io.InputStream;
9
import java.util.Properties;
10
import java.util.ResourceBundle;
11
/**
12
*對屬性文件(xx.properties)的操作
13
*注:屬性文件一定要放在當前工程的根目錄下,也就是放在與src目錄在同一個目錄下(我的JDevelop
14
*是這樣的)
15
*/
16
public class OperatePropertiesFile {
17
public OperatePropertiesFile() {
18
}
19
/**
20
*采用Properties類取得屬性文件對應值
21
*@parampropertiesFileNameproperties文件名,如a.properties
22
*@parampropertyName屬性名
23
*@return根據屬性名得到的屬性值,如沒有返回""
24
*/
25
public static String getValueByPropertyName(String propertiesFileName,String propertyName) {
26
String s="";
27
Properties p=new Properties();//加載屬性文件讀取類
28
FileInputStream in;
29
try {
30
//propertiesFileName如test.properties
31
in = new FileInputStream(propertiesFileName);//以流的形式讀入屬性文件
32
p.load(in);//屬性文件將該流加入的可被讀取的屬性中
33
in.close();//讀完了關閉
34
s=p.getProperty(propertyName);//取得對應的屬性值
35
} catch (Exception e) {
36
e.printStackTrace();
37
}
38
return s;
39
}
40
/**
41
*采用ResourceBundel類取得屬性文件對應值,這個只能夠讀取,不可以更改及寫新的屬性
42
*@parampropertiesFileNameWithoutPostfixproperties文件名,不帶后綴
43
*@parampropertyName屬性名
44
*@return根據屬性名得到的屬性值,如沒有返回""
45
*/
46
public static String getValueByPropertyName_(String propertiesFileNameWithoutPostfix,String propertyName) {
47
String s="";
48
//如屬性文件是test.properties,那此時propertiesFileNameWithoutPostfix的值就是test
49
ResourceBundle bundel = ResourceBundle.getBundle(propertiesFileNameWithoutPostfix);
50
s=bundel.getString(propertyName);
51
return s;
52
}
53
/**
54
*更改屬性文件的值,如果對應的屬性不存在,則自動增加該屬性
55
*@parampropertiesFileNameproperties文件名,如a.properties
56
*@parampropertyName屬性名
57
*@parampropertyValue將屬性名更改成該屬性值
58
*@return是否操作成功
59
*/
60
public static boolean changeValueByPropertyName(String propertiesFileName,String propertyName,String propertyValue) {
61
boolean writeOK=true;
62
Properties p=new Properties();
63
InputStream in;
64
try {
65
66
in = new FileInputStream(propertiesFileName);
67
p.load(in);//
68
in.close();
69
p.setProperty(propertyName,propertyValue);//設置屬性值,如不屬性不存在新建
70
//p.setProperty("testProperty","testPropertyValue");
71
FileOutputStream out=new FileOutputStream(propertiesFileName);//輸出流
72
p.store(out,"");//設置屬性頭,如不想設置,請把后面一個用""替換掉
73
out.flush();//清空緩存,寫入磁盤
74
out.close();//關閉輸出流
75
} catch (Exception e) {
76
e.printStackTrace();
77
}
78
return writeOK;
79
}
80
}
81

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81
