Day_14【IO流】扩展案例2_缓冲字符输出、输入流进行用户名的创建

需求分析

  •  1.项目根目录下建立文件: user.txt,文件中存放用户名和登录密码,格式:用户名,密码,如:aaa,123;
     2.user.txt文件中初始存放的用户信息有如下:
     	jack,123
     	rose,123
     	tom,123
     3.要求完成如下功能:
     	程序运行时:控制台提示用户输入注册的用户名和密码;
    		验证键盘录入的用户名跟user.txt中已注册的用户名是否重复:
    			是:控制台提示:用户名已存在
    			否:将键盘录入的用户名及密码写入user.txt文件,并在控制台提示:注册成功; 
    

思路

  •  1.键盘录入用户名和密码并用两个String变量接受
     2.创建输入流对象关联user.txt
     3.创建集合对象, 用于存储读取到的数据
     4.定义boolean类型的标记flag, 假设键盘录入的用户名不存在, 默认为false
     5.遍历集合获取到每一个数据(数据是用户名,密码的字符串, 思路不要乱)
     	a)根据逗号切割当前字符串, 获取字符串数组中0索引的用户名
     	b)拿着键盘录入的用户名和切割后的用户名逐个对比, 相同的话将flag改为true
     6.判断flag
     	a)true : 提示已经存在
     	b)false: 创建输出流对象关联user.txt, 并将键盘录入的用户名和密码拼接上逗号写出.(注意尾部追加)
    

代码

package com.itheima2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) throws IOException {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		//键盘录入用户名和密码并用两个String变量接受
		System.out.println("请输入您的用户名:");
		String userName = sc.nextLine();
		
		System.out.println("请输入您的用户密码:");
		String password = sc.nextLine();
		
		//创建输入流对象关联user.txt
		BufferedReader br = new BufferedReader(new FileReader("user.txt"));
		
		//创建集合对象, 用于存储读取到的数据
		ArrayList<String> array = new ArrayList<String>();
		
		String line;
		while((line = br.readLine()) != null) {
			array.add(line);
		}
		
		br.close();
		
		//定义boolean类型的标记flag, 假设键盘录入的用户名不存在, 默认为false
		boolean flag = false;
		
		//遍历集合获取到每一个数据(数据是用户名,密码的字符串, 思路不要乱)
		for(String s : array) {
			//根据逗号切割当前字符串, 获取字符串数组中0索引的用户名
			String[] strArray = s.split(",");
			//拿着键盘录入的用户名和切割后的用户名逐个对比, 相同的话将flag改为true
			if(userName.equals(strArray[0])) {
				flag = true;
			}
		}
		
		//判断flag
		if(flag) {
			//true : 提示已经存在
			System.out.println("用户名已存在");
		} else {
			//false: 创建输出流对象关联user.txt, 并将键盘录入的用户名和密码拼接上逗号写出.(注意尾部追加)
			BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt",true));
			
			bw.write(userName+","+password);
			bw.newLine();
			bw.flush();
			
			bw.close();
			
			System.out.println("注册成功");
		}
	}

}

控制台输出内容
控制台输出内容

发布了60 篇原创文章 · 获赞 0 · 访问量 1378

猜你喜欢

转载自blog.csdn.net/CODEROOKIE_RUN/article/details/103797334