字符流
——–Reader 输入字符流的基类
————FileReader 读取文件的输入字符流
————BufferedReader 缓冲输入字符流
——–Writer 所有输出字符流的基类,抽象类
————FileWriter 向文件输出字符数据的输出字符流
————BufferedWriter 缓冲输出字符流 (提高FileWriter的写数据效率,拓展FileWriter的功能)
BufferedWriter内部提供了一个8192长度的字符数组作为缓冲区,拓展了FileWriter的功能
/*
*用缓冲输入输出字符流模拟用户注册登录
*/
import java.util.Scanner;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Login {
static Scanner scanner=new Scanner(System.in);
public static void main(String[] args) throws IOException{
while(true){
System.out.println("请选择功能:A(注册) 登录(B) 退出(Q)");
String option=scanner.next();
if(option.equalsIgnoreCase("A")){
//注册
reg();
}else if(option.equalsIgnoreCase("B")){
//登录
log();
}else if(option.equalsIgnoreCase("Q")){
System.exit(0);
}
else{
System.out.println("啊哦( ⊙ o ⊙ ),没有这个选项,请重新选择..");
}
}
}
//注册
public static void reg() throws IOException{
System.out.println("请输入用户名:");
String userName=scanner.next();
System.out.println("请输入密码:");
String password=scanner.next();
//将用户名和密码拼接成一行
String info=userName+" "+password;
//将用户注册在信息写到文件上
FileWriter fileWriter=new FileWriter("F:\\users.txt",true);//FileWriter(File file,boolean append);
BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
bufferedWriter.write(info);
bufferedWriter.newLine();//写入一个行分隔符
bufferedWriter.close();
}
//登录
public static void log() throws IOException{
System.out.println("请输入用户名");
String userName=scanner.next();
System.out.println("请输入密码:");
String password=scanner.next();
String info=userName+" "+password;
FileReader fileReader=new FileReader("F:\\users.txt");
BufferedReader bufferedReader=new BufferedReader(fileReader);
//标记是否存在用户信息
boolean flagLog=false;
String line=null;
while((line=bufferedReader.readLine())!=null){
if(info.equals(line)){
flagLog=true;
break;
}
}
if(flagLog==true){
System.out.println("登陆成功..");
}else{
System.out.println("用户名或密码错误,请重新登录");
log();
}
bufferedReader.close();
}
}