/*
Properties是hashtable的子类,具备Map集合的特点,其内部存储的是键值对,
它是集合中和IO技术相结合的容器。
特点:可用于键值对形式的配置文件,且格式固定:键=值。
*/
package file;
import java.io.*;
import java.util.*;
class IOProperties
{
public static void main(String[] args) throws IOException
{
//loadMethod();
loadDemo();
}
//load方法演示
public static void loadDemo() throws IOException
{
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("D:\\java_work\\BasicFiles\\settingsinfo.txt");
//将流中的数据加载进集合
prop.load(fis);
prop.setProperty("player","Memphis"); //只能在内存中改变值,文件中不变化
prop.setProperty("number","7");
//改变文件中的值,将上一步内存中改变的值同步到文本中并修改。
FileOutputStream fos = new FileOutputStream("D:\\java_work\\BasicFiles\\settingsinfo.txt");
prop.store(fos,"Ryan"); //"Ryan"是注释内容,以#开头,Properties不执行,此外会默认注释时间。
prop.list(System.out);
fos.close();
fis.close();
}
/*load方法原理演示:将流中的数据存储到集合中
需求:将settingsinfo.txt中的键值对数据存到集合中进行操作。
步骤:1.用一个流和settingsinfo.txt文件进行关联。
2.读取一行数据,将该行数据用"="进行切割。
3.等号左边为键,右边为值,存入到Properties集合中即可。
*/
public static void loadMethod() throws IOException
{
BufferedReader bufr = new BufferedReader(new FileReader("D:\\java_work\\BasicFiles\\settingsinfo.txt"));
Properties prop = new Properties();
String line = null;
while ((line=bufr.readLine())!=null)
{
String[] arr = line.split("=");
prop.setProperty(arr[0],arr[1]);
}
bufr.close();
sop(prop);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
|
|