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

Day_14【IO流】扩展案例2_缓冲字符输出、输入流进行用户名的创建的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)
Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...
- 01 语言基础+高级:1-8 File类与IO流_day09【字节流、字符流】
day09[字节流.字符流] 主要内容 IO流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 ...
- java_缓冲流(字符输出输入流)
/** java.io.BufferedReader extends Reader * * 构造方法: * BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符 ...
- IO流(一)__File对象和字符流FileWriter FileReader
IO流:IO流用来处理设备之间的数据传输,Java对于流的操作对象都在IO包中将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出 流分为字节流和字符流字符流的由来:其实就是字节流读取文字字节 ...
- (16)IO流之输入字节流FileInputStream和输出字节流FielOutputStream
IO流技术解决的问题:设备与设备之间的传输问题,内存-->硬盘,硬盘-->内存,等等 IO流技术 如果按照数据的流向划分可以划分为:输入流和输出流 输入输出的标准是以程序为参考物的,如果流 ...
- Day_13【IO流】扩展案例2_统计键盘录入字符在指定项目文件中出现的次数
分析以下需求,并用代码实现 键盘录入一个字符(以字符串的形式录入) 判断当前字符在info3.txt当中是否存在 如果不存在, 给出提示 如果存在, 请统计出该字符出现的次数 Info3.txt内容如 ...
- Day_13【IO流】扩展案例2_统计指定项目文件中字符出现的次数
需求分析 统计当前项目下info2.txt文件中, 每个字符出现的个数 文件内容如下: welcome to itheima!!! 最终效果如下: w(1) (2)!(3)t(2)e(3)c(1)a( ...
- IO流(5)—缓冲流
1.IO体系: 抽象基类--节点流(文件流)--缓冲流(处理流的一种) InputStream --FileInputStream--BufferedInputStream OutputStream- ...
随机推荐
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ...
- Cucumber(4)——jenkins的集成
目录 回顾 必备知识 集成方法 回顾 在上几节中,关于cucumber的知识我已经全部的介绍完了,但是近期,jenkins大行其道,在工作上面能为我们节省大量的时间. 所以在本节中,我会介绍cucum ...
- redis 分布式锁的 5个坑,真是又大又深
引言 最近项目上线的频率颇高,连着几天加班熬夜,身体有点吃不消精神也有些萎靡,无奈业务方催的紧,工期就在眼前只能硬着头皮上了.脑子浑浑噩噩的时候,写的就不能叫代码,可以直接叫做Bug.我就熬夜写了一个 ...
- Linux学习笔记(一)目录处理命令
目录处理命令 ls cd mkdir rmdir tree ls 英文原意: list 功能: 显示目录文件 语法: ls 选项[-ald] [文件或目录] ls -a 显示所有文件,包括隐藏文件 l ...
- 简谈” Top K“
Top K 快速选择和堆排序都可以求解 Kth Element 和 TopK Elements 问题. 题见215. Kth Largest Element in an Array (Medium) ...
- JasperReports入门教程(二):中文打印
JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...
- async,await与task.wait()或task.Result的区别
你是否曾经与我一样不理解async,await与task.wait()或者task.Result的区别? 接下来,一个Demo让你看出他们之间的区别. static void Main(string[ ...
- tp5.1 模型 where多条件查询 like 查询
来源:https://blog.csdn.net/qq_41241684/article/details/87866416 所以我改成这样: $paperTypeModel = new PaperTy ...
- java 8中构建无限的stream
目录 简介 基本使用 自定义类型 总结 java 8中构建无限的stream 简介 在java中,我们可以将特定的集合转换成为stream,那么在有些情况下,比如测试环境中,我们需要构造一定数量元素的 ...
- solr7.4创建core,导入MySQL数据,中文分词
#solr版本:7.4.0 一.新建Core 进入安装目录下得server/solr/,创建一个文件夹,如:new_core 拷贝server/solr/configsets/_default/con ...