标签:rgs 信息 tool file 遍历 move read etag 测试数据
FileWriter: 作用 往文件中写入数据
使用步骤:
1.创建FW对象
FileWriter(String fileName); 要往哪个文件中写,就把对应的文件名作为参数
2.写入数据
wirte(String str); 写入字符串数据str
3.刷新
flush();
4.关闭资源
close();
绝对路径与相对路径
绝对路径: 带盘符的路径就是绝对路径 比如 E:\\289\\b.txt ,文件存放的位置就是我们路径所指向的位置
相对路径: 不带盘符的路径就是相对路径 比如 b.txt, 文件存放的位置,是当前工程的路径下
刷新:flush 作用是把流中的数据 刷新到文件中 ,可以在flush后面进行多次写入
close: 关闭资源, 在关闭资源之前自动执行一次刷新 , 一旦关闭流 就不能再写入
FileWriter 写数据的 5 个方法
void write(String str) // 写入一个字符串
void write(String str,int index,int len) // 写入字符串的一部分 从index开始 持续len个
void write(int ch) // 写入一个字符, 使用int的原因,也可以写入对应字符的unicode码 a---> 97 , b --> 98
void write(char[] chs)// 把数组chs中的数据写入到文件
void write(char[] chs,int index,int len) // 把数组chs中一部分数据 写入到文件 从index开始,持续len个
换行符
windows: \r\n
linux : \n
Mac : \r
构造方法
new FileWriter("test04.txt"); 覆盖式 ; 新数据把文件原有的数据全都覆盖掉
new FileWriter(String fileName, boolean append); 当append为true的时候就表示追加, 否则表示覆盖
FileReader作用: 从文件中读取数据
使用步骤:
1.创建FR对象
FileReader(String fileName); 把指定的文件名当做参数传递
2.调用方法读取数据
int read(); 一次读取一个字符,并把这个字符作为返回值 ,当数据读取完毕时返回的结果-1
int read(char[] chs); 一次读取一个字符数组,把读取到的数据存放到chs数组中 ,返回的是本次读取的个数
3.关闭资源
close();
读
int read(); 一次读取一个字符 并把这个字符作为返回值
int read(char[] chs); 一次读取一个字符数组,把读取到的数据存放在chs数组中, 把本次读取到的字符个数作为返回值 ,当
数据读取完毕的时候 返回值为-1
BufferedWriter用来写入数据, 优点 更高效
使用步骤:
1.创建BW对象
BufferedWriter bw = new BufferedWriter(new FileWriter(String fileName));
2.写入数据
bw.write(String str);
3.刷新
bw.flush()
4.关闭
bw.close()
bw.newLine();// 插入一个换行, 根据不同的系统插入对应系统的换行符
BufferedReader用来读取数据 , 优点 更高效
使用步骤:
1.创建BR对象
BufferedReader br = new BufferedReader(new FileReader(String fileName));
2.读取数据
br.read()
br.read(char[] chs)
3.关闭
br.close();
readLine 一次读取一行的内容 ,但是不读取换行 ,当数据读取完毕的时候 返回null
IO代码练习
* 需求一:
* 从指定文件中 把数据读取出来 存储到集合中 并展示
*
* 1.观察文件 创建一个类 描述用户的信息
* 2.创建一个集合用来存储用户的信息
* 3.创建一个BR对象
* 4.读取文件,组成对象 添加到集合中
* 5.关闭资源
* 6.遍历并展示
1 public static void test01() throws IOException {
2 ArrayList<User> list = new ArrayList<User>();
3
4 // 创建一个BR对象
5 BufferedReader br = new BufferedReader(new FileReader("Users.txt"));
6 String line;
7 while ((line = br.readLine()) != null) {
8 // 切割
9 String[] uu = line.split(",");
10 User u = new User(uu[0], uu[1]);
11 list.add(u);
12 }
13 br.close();
14
15 for (int i = 0; i < list.size(); i++) {
16 User user = list.get(i);
17 System.out.println(user.getName() + " " + user.getPwd());
18 }
19 }
需求二:
判断指定的用户名和密码 是否在指定的文件中
让用户输入一个用户名和密码 判断这个用户名和密码是否在指定的文件中
1.观察文件 创建一个类 描述用户的信息
2.创建一个集合用来存储用户的信息
3.创建一个BR对象
4.读取文件,组成对象 添加到集合中
5.关闭资源
6.提示用户输入用户名和密码
7.拿用户输入的用户名和密码 去集合中查找, 如果找到就表示在文件中, 否则表示不在
1 public static void test02() throws IOException {
2 ArrayList<User> list = new ArrayList<User>();
3
4 // 创建一个BR对象
5 BufferedReader br = new BufferedReader(new FileReader("Users.txt"));
6 String line;
7 while ((line = br.readLine()) != null) {
8 // 切割
9 String[] uu = line.split(",");
10 User u = new User(uu[0], uu[1]);
11 list.add(u);
12 }
13 br.close();
14
15 Scanner sc = new Scanner(System.in);
16 System.out.println("请输入用户名");
17 String name = sc.next();
18 System.out.println("请输入密码");
19 String pwd = sc.next();
20
21 // 定义标记
22 int index = -1;
23 for (int i = 0; i < list.size(); i++) {
24 User user = list.get(i);
25 if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {
26 // 修改标记
27 index = i;
28 break;
29 }
30 }
31 // 判断笔记
32 if (index == -1) {
33 //
34 System.out.println("用户名或者密码错误");
35 } else {
36 System.out.println("恭喜你猜对了");
37 }
38
39 }
需求三:
让用户输入一个用户名和密码 判断这个用户名和密码是否在指定的文件中 如果不在就一直猜 直到猜对为止
1.观察文件 创建一个类 描述用户的信息
2.创建一个集合用来存储用户的信息
3.创建一个BR对象
4.读取文件,组成对象 添加到集合中
5.关闭资源
6.提示用户输入用户名和密码
7.拿用户输入的用户名和密码 去集合中查找, 如果找到就表示在文件中, 否则表示不在
8.使用循环进行反复判断
1 public static void test03() throws IOException{
2
3 ArrayList<User> list = new ArrayList<User>();
4
5 // 创建一个BR对象
6 BufferedReader br = new BufferedReader(new FileReader("Users.txt"));
7 String line;
8 while ((line = br.readLine()) != null) {
9 // 切割
10 String[] uu = line.split(",");
11 User u = new User(uu[0], uu[1]);
12 list.add(u);
13 }
14 br.close();
15
16 Scanner sc = new Scanner(System.in);
17 while(true){
18
19 System.out.println("请输入用户名");
20 String name = sc.next();
21 System.out.println("请输入密码");
22 String pwd = sc.next();
23
24 // 定义标记
25 int index = -1;
26 for (int i = 0; i < list.size(); i++) {
27 User user = list.get(i);
28 if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {
29 // 修改标记
30 index = i;
31 break;
32 }
33 }
34 // 判断笔记
35 if (index == -1) {
36 //
37 System.out.println("用户名或者密码错误 ,请重新输入用户名和密码 ");
38 } else {
39 System.out.println("恭喜你猜对了");
40 break;
41 }
42
43
44 }
45 }
需求四:
让用户输入一个用户名和密码 判断这个用户名和密码是否在指定的文件中 如果不在就一直猜 直到猜对为止 用户只能猜3次 每次失败提示还能猜几次
1.观察文件 创建一个类 描述用户的信息
2.创建一个集合用来存储用户的信息
3.创建一个BR对象
4.读取文件,组成对象 添加到集合中
5.关闭资源
6.提示用户输入用户名和密码
7.拿用户输入的用户名和密码 去集合中查找, 如果找到就表示在文件中, 否则表示不在
8.使用循环进行反复判断
1 public static void main(String[] args) throws IOException {
2
3 ArrayList<User> list = new ArrayList<User>();
4
5 // 创建一个BR对象
6 BufferedReader br = new BufferedReader(new FileReader("Users.txt"));
7 String line;
8 while ((line = br.readLine()) != null) {
9 // 切割
10 String[] uu = line.split(",");
11 User u = new User(uu[0], uu[1]);
12 list.add(u);
13 }
14 br.close();
15
16 Scanner sc = new Scanner(System.in);
17 int count = 0;
18 while(true){
19
20 System.out.println("请输入用户名");
21 String name = sc.next();
22 System.out.println("请输入密码");
23 String pwd = sc.next();
24 count++;
25 // 定义标记
26 int index = -1;
27 for (int i = 0; i < list.size(); i++) {
28 User user = list.get(i);
29 if (name.equals(user.getName()) && pwd.equals(user.getPwd())) {
30 // 修改标记
31 index = i;
32 break;
33 }
34 }
35 // 判断笔记
36 if (index == -1) {
37 if(count < 3){
38 System.out.println("用户名或者密码错误 ,请重新输入用户名和密码 还可以猜测的次数是 :"+(3 - count ));
39
40 }else{
41 System.out.println("别猜了 练习管理员吧 !!!");
42 break;
43 }
44 //
45 } else {
46 System.out.println("恭喜你猜对了");
47 break;
48 }
49
50
51 }
52
53 }
IO版学生管理系统
1 public static void main(String[] args) throws IOException {
2 String fileName = "list.txt";
3 // 初始化数据
4 // 创建集合容器
5 ArrayList<Student> list = new ArrayList<Student>();
6 //从文件中读取数据存入到集合
7 readFromFile(list, fileName);
8 // // ====================测试数据===================
9 // Student s1 = new Student("9001", "张三", "18", "北京");
10 // Student s2 = new Student("9002", "张三3", "18", "北京");
11 // Student s3 = new Student("9003", "张三4", "18", "北京");
12 // list.add(s1);
13 // list.add(s2);
14 // list.add(s3);
15 // // ====================测试数据===================
16
17 System.out.println("----------------------欢迎使用管理系统--------------------------");
18 // 死循环
19 while (true) {
20 // 接收用户的选择
21 int user = chose();
22
23 // 根据用户的输入调用功能
24 switch (user) {
25 case 1:
26 show(list);
27 break;
28 case 2:
29 add(list);
30 save2File(list, fileName);
31 break;
32 case 3:
33 upd(list);
34 save2File(list, fileName);
35 break;
36 case 4:
37 del(list);
38 save2File(list, fileName);
39 break;
40 case 5:
41 System.out.println("欢迎下次再来哦 老板");
42 System.exit(0);
43 break;
44
45 default:
46 System.out.println("呵呵");
47 break;
48 }
49 }
50 }
51 //把数据从文件中读取出来 存入到集合
52 public static void readFromFile(ArrayList<Student> list,String fileName) throws IOException{
53 // 创建BR对象
54 BufferedReader br = new BufferedReader(new FileReader(fileName));
55
56 String line;
57 while ((line = br.readLine()) != null) {
58 // 9003,阿拉并,20,迪拜
59 // 把读取到的一行信息 切割成各个字段
60 String[] ss = line.split(",");
61 // 把散装的数组组成对象
62 Student s = new Student(ss[0], ss[1], ss[2], ss[3]);
63 // 把对象添加到集合中
64 list.add(s);
65 }
66
67 // 关闭资源
68 br.close();
69 System.out.println("初始化完毕");
70 }
71 // 把集合中的数据 写入到文件
72 public static void save2File(ArrayList<Student> list ,String fileName) throws IOException{
73 //创建BW对象
74 BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
75
76 //遍历集合获取学生信息, 写入到文件
77 for (int i = 0; i < list.size(); i++) {
78 Student tmp = list.get(i);
79 // 9001,张三,18,北京
80 //使用sb按照指定的格式拼装学生的信息
81 StringBuilder sb = new StringBuilder();
82 sb.append(tmp.getId()).append(",")
83 .append(tmp.getName()).append(",")
84 .append(tmp.getAge()).append(",")
85 .append(tmp.getHome());
86 bw.write(sb.toString());
87 bw.newLine();// 换行
88 bw.flush();
89 }
90
91 //6.关闭资源
92 bw.close();
93 }
94
95
96 public static int chose() {
97 // 展示菜单
98 System.out.println("====================================");
99 System.out.println("1.展示学生信息");
100 System.out.println("2.添加学生信息");
101 System.out.println("3.修改学生信息");
102 System.out.println("4.删除学生信息");
103 System.out.println("5.退出学生信息管理系统");
104 System.out.println("请输入功能序号");
105 System.out.println("====================================");
106 // 接收用户的输入
107 Scanner sc = new Scanner(System.in);
108 return sc.nextInt();
109
110 }
111
112 public static void del(ArrayList<Student> list) {
113 // 提示输入学号
114 Scanner sc = new Scanner(System.in);
115 System.out.println("请输入学号");
116 String id = sc.next();
117 // 查找
118 // 查找
119 // 定义标记
120 int index = -1;
121 // 查找 关键位置修改标记
122 for (int i = 0; i < list.size(); i++) {
123 Student s = list.get(i);
124 if (id.equals(s.getId())) {
125 // 找到
126 index = i;
127 break;
128 }
129 }
130 //判断标记
131 if(index == -1){
132 System.out.println("无这个学号的学生 请重新选择功能");
133 }else{
134 //删除
135 list.remove(index);
136 System.out.println("删除完毕");
137 }
138
139 }
140
141 public static void upd(ArrayList<Student> list) {
142 // 提示输入学号
143 Scanner sc = new Scanner(System.in);
144 System.out.println("请输入学号");
145 String id = sc.next();
146 // 查找
147 // 定义标记
148 int index = -1;
149 // 查找 关键位置修改标记
150 for (int i = 0; i < list.size(); i++) {
151 Student s = list.get(i);
152 if (id.equals(s.getId())) {
153 // 找到
154 index = i;
155 break;
156 }
157 }
158 // 判断标记
159 if (index == -1) {
160 // 没找到
161 System.out.println("没有这个学号的学生 请重新选择功能 ");
162 } else {
163 System.out.println("请输入新姓名");
164 String name = sc.next();
165 System.out.println("请输入新年龄");
166 String age = sc.next();
167 System.out.println("请输入新家乡");
168 String home = sc.next();
169 Student s = new Student(id, name, age, home);
170 list.set(index, s);
171 System.out.println("修改完毕");
172 }
173
174 }
175
176 public static void add(ArrayList<Student> list) {
177 // 提示输入学号
178 Scanner sc = new Scanner(System.in);
179 System.out.println("请输入学号");
180 String id = sc.next();
181 // 去重
182 while (true) {
183 // 拿着用户输入的id去集合中查找,如果没有相等的id说明合法, 否则提示不合法并继续输入继续去重,直到合法位置
184 // 定义标记
185 int index = -1;
186 // 查找 关键位置改变标记
187 for (int i = 0; i < list.size(); i++) {
188 Student student = list.get(i);
189 if (id.equals(student.getId())) {
190 // 有重复
191 index = i;
192 break;
193 }
194 }
195 // 判断标记
196 if (index == -1) {
197 // 无重复
198 break;
199 } else {
200 // 有重复
201 System.out.println("您输入的学号 重复了 请重新输入学号");
202 id = sc.next();
203 }
204 }
205
206 System.out.println("请输入姓名");
207 String name = sc.next();
208 System.out.println("请输入年龄");
209 String age = sc.next();
210 System.out.println("请输入家乡");
211 String home = sc.next();
212 Student s = new Student(id, name, age, home);
213 list.add(s);
214 System.out.println("添加完毕");
215 }
216
217 public static void show(ArrayList<Student> list) {
218 // 判断
219 if (list.size() == 0) {
220 System.out.println("系统中无学生信息, 请选择添加");
221 } else {
222 System.out.println("===================学生信息如下======================");
223 System.out.println("学号\t\t姓名\t\t年龄\t\t家乡");
224 for (int i = 0; i < list.size(); i++) {
225 Student s = list.get(i);
226 System.out.println(s.getId() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "\t\t" + s.getHome());
227 }
228 }
229 System.out.println("展示完毕");
230 }
http://www.cnblogs.com/caigq/p/6985994.html
标签:rgs 信息 tool file 遍历 move read etag 测试数据
原文地址:http://www.cnblogs.com/XJJD/p/7009877.html