properties集合(属性列表)

Properties 集合
是HashTable的子类
也就是具备Map集合的特点 
键值对形式存储 键值对都是字符串 不需要写泛型
是集合 和 IO技术相结合的容器


常用方法:
Object setProperty(String key,String value)向集合中存储 key value 键值对
String getProperty(String key) 根据键 获取值
Enumeration propertyNames() 遍历集合
Set<String> stringPropertyNames() 遍历集合


void load(InputStream inStream) 将流中的数据加载进集合
void store(OutputStream outStream,String comments) 将集合中的数据 存入到流中 并且保存到文件上
String comments 备注 可写可不写 但是参数个数不能少 可传null
void list(PrintStream out) 将属性列表输出到指定的输出流中
特点:
可以用于键值对形式的配置文件

将配置信息持久化保存到文件中

 

.properties 配置文件 存储键值对 键值对以等号进行分割

package test;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Properties;
import java.util.Scanner;
import java.util.Set;

public class test_1 {

	public static void main(String[] args) throws IOException, AWTException {
		// TODO Auto-generated method stub
		
		/*练习 创建配置文件 login.properties 向配置文件中写入 admin=123456 初始化数据(createProperties方法名)
		 *  控制台操作列表(menu方法)
		 *  1.登录(login方法)
		 *  2.修改密码(resetPassword方法)
		 *  3.增加新用户(register方法) 用户名 必须是字母 密码可以是字母 和数字的组合
		 *  4.退出exit
		 *  5.[扩展]删除指定用户(deleteUser 方法)
		 *  选择1
		 *  	提示"请输入用户名和密码"
		 *  	进入配置文件中 进行 输入的校对 
		 *  	相同 "登录成功" 不同 "登陆失败"
		 *  	[扩展] 登录成功 显示用户列表
		 *  选择2
		 *  	提示"请输入用户名 旧密码 和 新密码"
		 *  	进入配置文件中 校对 用户名 和 旧密码 是否一致 如果一致 则修改密码	不一致 显示"无法修改"
		 *  选择3
		 *  	提示"请输入新用户名和密码"
		 *  	进入配置文件 将新用户名和密码进行存储
		 *  选择4 退出系统
		 *  选择5
		 *  	提示"请输入要删除的用户名 和 密码"
		 *  	输入后 提示 "是否要删除 Y/N"
		 *  	输入Y -->完成删除
		 *  	输入N -->回到主菜单
		 *  以上操作完成 均返回主菜单 当退出时 才结束程序 */
//		createProperties();//初始化数据
//		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//		menu(br);
		
		int y;
		Properties ps = new Properties();
		Scanner sc = new Scanner(System.in);
		boolean tr = false;
		while (true) {
			if (tr == false) {
				System.out.println("1.登录(login方法):");
			} else {
				System.out.println("=====欢迎进入系统=====");
				System.out.println("2.修改密码:");
				System.out.println("3.增加新用户:");
				System.out.println("4.显示所有用户");
				System.out.println("5.删除指定用户:");
				System.out.println("6.退出系统");
			}
			String str = sc.next();
			if ("exit".equals(str))
				break;
			y = Integer.parseInt(str);
			switch (y) {
			case 1:
				FileInputStream fis = new FileInputStream("login.properties");
				ps.load(fis);                       //由文件输入流加载到properties集合
				System.out.println("请输入用户名和密码:");
				String UserName = sc.next();
				String passWord = sc.next();
				String psw = ps.getProperty(UserName);
				if (psw != null && passWord.equals(psw)) {
					
					cls.clear();
					System.out.println("登录成功");
					tr = true;
				}
				fis.close();

				break;
			case 2:
				FileOutputStream fos = new FileOutputStream("login.properties");
				System.out.println("请输入用户名:");
				String UserName1 = sc.next();
				System.out.println("请输入旧密码:");
				String password1 = sc.next();
				System.out.println("请输入新密码:");
				String password2 = sc.next();
				String psw1 = ps.getProperty(UserName1);
				if (psw1 != null && password1.equals(psw1)) {
					cls.clear();
					ps.setProperty(UserName1, password2);
					System.out.println("密码修改成功!");
					ps.store(fos, UserName1 + "=" + password2);
				} else {
					System.out.println("输入密码不对,修改失败!");
				}
				fos.close();

				break;
			case 3:
				System.out.println("请输入名称:");
				String UserName2 = sc.next();
				if (ps.containsKey(UserName2)) {
					System.out.println("用户名已存在!");
					break;
				}
				System.out.println("请输入密码:");
				String passWord3 = sc.next();
				FileOutputStream fos1 = new FileOutputStream("login.properties");
				ps.setProperty(UserName2, passWord3);
				System.out.println("恭喜,注册成功!");
				ps.store(fos1, UserName2 + "=" + passWord3);
				break;
			case 4:
				//遍历方式一                    Enumeration<Object> propertyNames() 遍历集合
				Enumeration<String> en = (Enumeration<String>)ps.propertyNames();
				while(en.hasMoreElements())
				{
					String key = en.nextElement();
					String value = ps.getProperty(key);
					System.out.println(key+"="+value);
				}
				
				//遍历方式二                 Set<String> stringPropertyNames() 遍历集合
				Set<String> st = ps.stringPropertyNames();
				Iterator<String> it = st.iterator();
				while(it.hasNext())
				{
					String key1 = it.next();
					String value1 = ps.getProperty(key1);
					System.out.println(key1+"="+value1);
					
				}

				break;
			case 5:
				FileOutputStream fos2 = new FileOutputStream("login.properties");
				System.out.println("请输入要删除的用户名:");
				String UserName3 = sc.next();
				System.out.println("请输入密码:");
				String passWord4 = sc.next();
				String psw2 = ps.getProperty(UserName3);
				if (psw2 != null && passWord4.equals(psw2)) {
					System.out.println("是否要删除y/n:");
					char yu;
					yu = sc.next().charAt(0);
					if (yu == 'y') {
						ps.remove(UserName3, passWord4);
						System.out.println("删除成功!");
						ps.store(fos2, null);
					}
					if (yu == 'n') {
						break;
					}

				} else {
					System.out.println("用户名和密码对不上,无法删除!");
				}

				break;
			case 6:
				tr = false;
				System.out.println("====请重新登录!====");

				break;
			default:
				System.out.println("输入信息有误!");
				break;

			}
			// cls.clear();
		}

	}

}

class cls {
	public static void clear() throws AWTException {
		Robot r = new Robot();
		r.mousePress(InputEvent.BUTTON3_MASK); // 按下鼠标右键
		r.mouseRelease(InputEvent.BUTTON3_MASK); // 释放鼠标右键
		r.keyPress(KeyEvent.VK_CONTROL); // 按下Ctrl键
		r.keyPress(KeyEvent.VK_R); // 按下R键
		r.keyRelease(KeyEvent.VK_R); // 释放R键
		r.keyRelease(KeyEvent.VK_CONTROL); // 释放Ctrl键
		r.delay(100);

	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值