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("注册成功");
}
}
}
控制台输出内容