Properties概述
1.Properties 类表示了一个持久的属性集
属性集:Properties 就是以键值对来存储资源 也是一个键对应一个值
持久化: 可以将 Properties数据永久保存到文件 可以与文件进行交互
2.Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串,使用其独有方法是需要每个键及其对应值都是一个字符串
3.Properties 就是hashtable的一个子类 可以把Properties 当做是一个map对象来看待
有map的put,get,keySet方法 独有方法是setProperty 相当于put, getProperty 相当于get
stringPropertyNames 相当于keySet,但是使用其独有方法是需要每个键及其对应值都是一个字符串
store(new FileOutputStream(“2.txt”)); 写入
load(new FileInputStream(“2.txt”)); 读取
Properties基本的使用
package day20;
import java.util.Properties;
import java.util.Set;
public class Test01 {
public static void main(String[] args) {
Properties pro = new Properties();
pro.put(“key1”,“value1”);
pro.put(“key2”,“value1”);
pro.put(“key3”,“value1”);
Set set = pro.keySet();
for (Object o : set) {
System.out.println(o+“\t”+pro.get(o));
}
}
}
Properties独有的方法
package day20;
import java.util.Properties;
import java.util.Set;
public class Test02 {
public static void main(String[] args) {
Properties pro = new Properties();
pro.setProperty("老师1","三上老师");
pro.setProperty("老师2","桥本老师");
pro.setProperty("老师3","不知道老师");
System.out.println(pro.getProperty("老师1"));
System.out.println(pro.getProperty("老师2"));
Set<String> set = pro.stringPropertyNames();
for (String s : set) {
System.out.println(s+"\t"+pro.getProperty(s));
}
}
}
将properties中的数据保存文件中
可以是字节流,也可以是字符流
package day20;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class Test03 {
public static void main(String[] args) throws IOException {
Properties pro = new Properties();
pro.setProperty("name","shunge");
pro.setProperty("pwd","123456");
pro.setProperty("age","18");
//会自动添加当前的date 数据
pro.store(new FileOutputStream("2.txt"),null);
}
}
将properties中的数据保存文件中数据进行读取
可以是字节流,也可以是字符流
package day20;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) throws IOException {
Properties pro = new Properties();
pro.load(new FileInputStream("2.txt"));
String name = pro.getProperty("name");
String pwd = pro.getProperty("pwd");
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String uname = sc.next();
System.out.println("请输入密码");
String upwd = sc.next();
if(name.equals(uname) && pwd.equals(upwd)){
System.out.println("登录成功");
}else {
System.out.println("用户名或密码错误");
}
}
}
工具类的封装
package day20;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesUtils {
private Properties pro;
private static PropertiesUtils propertiesUtils;
public static PropertiesUtils getInstance(){
//如果为null 才实例化对象
if(propertiesUtils == null){
propertiesUtils = new PropertiesUtils();
}
return propertiesUtils;
}
//通过静态代码块 通过私有的构造
private PropertiesUtils(){
try {
pro = new Properties();
pro.load(new FileInputStream("2.txt"));
} catch (IOException e) {
e.printStackTrace();
}
}
public String getValue(String key){
return pro.getProperty(key);
}
}
测试类
package day20;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) throws IOException {
//未实例化对象报错
//System.out.println(PropertiesUtils.getValue("name"));
/* System.out.println(PropertiesUtils.getInstance().getValue("name"));
//实例化对象
Properties pro = new Properties();
//将文件中的数据加载到properties中
pro.load(new FileInputStream("2.txt"));
String name = pro.getProperty("name");
String pwd = pro.getProperty("pwd");*/
String name =PropertiesUtils.getInstance().getValue("name");
String pwd = PropertiesUtils.getInstance().getValue("pwd");
//实例化 Scanner
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String uname = sc.next();
System.out.println("请输入密码");
String upwd = sc.next();
if(name.equals(uname) && pwd.equals(upwd)){
System.out.println("登录成功");
}else {
System.out.println("用户名或密码错误");
}
}
}
多参数的方法
1.使用场景:在定义方法的时候 形参的个数不确定的时候, 多参数的数据类型是一样 只能个数不同
…
2.定义的语法:
访问修饰符 返回值类型 方法的名称(String… nums) {
}
3.注意点:
(1) 多参数本质其实就是一个数组
(2) 多参数的个数是可以变的 但是数据类型是一直
(3) 方法中有多个参数 多参数类型一定要写在最后
public static void showInfo(int num,double d,String...s){}
4.代码
相等于数组 记一下形参的书写格式 数据类型…名字
package day20;
public class Test06 {
public static void main(String[] args) {
showInfo(121,22,44);
}
//相当于数组
public static void showInfo(int ...nums){
if(nums!=null && nums.length>0){
for (int i : nums) {
System.out.println(i);
}
}else {
System.out.println("没有参数");
}
}
}