利用IO流对文件的修改,以BufferedReader&BufferedWriter字符流为例

您所在的位置:网站首页 java替换文件内容行 利用IO流对文件的修改,以BufferedReader&BufferedWriter字符流为例

利用IO流对文件的修改,以BufferedReader&BufferedWriter字符流为例

2024-07-15 13:44| 来源: 网络整理| 查看: 265

1.使用背景

在大学初次学习Java课程设计时,经常会遇到老师要求我们设计管理系统,其中难免会涉及到用户信息的存储等相关内容。

本文以学生信息管理系统为例,讲解我对.txt文件内容修改时经常用到的方法。

2.样例讲解

在.txt文件中每个学生占用3行,每一行分别为学号、姓名、密码。如下所示:

S202101

张三

123456

S202102

李四

123123

S202103

王五

321321

······

S202150

盘五十

64564523

······

S202199

叶九九

4535789

在此次案例中,如要修改学生盘五十的密码,我的做法如下: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.LinkedList; import java.util.Scanner; public class caogao { public static void main(String args[]) throws IOException { Scanner in = new Scanner(System.in); System.out.println("请输入你的学号:"); String stuNo = in.nextLine(); /* 选择链表是因为链表在增删改查方面的算法优于顺序表 */ LinkedList list = new LinkedList(); /* 分配读取流 */ File txt = new File("X:\\XXX\\XXX.txt"); FileReader fr = new FileReader(txt); BufferedReader br = new BufferedReader(fr); String line; /* 读取文件内容,存储至链表中 */ while((line = br.readLine())!=null) { list.add(line); } fr.close(); br.close(); /* 循环链表,对学号的查找 */ for (int i = 0; i < list.size(); i+=3) { /* 当查找到时,对其开始数的第二个内容(即密码)进行修改 */ if(list.get(i).equals(stuNo)) { System.out.println("请输入您的新密码:"); String newPassword = in.nextLine(); list.set(i+2, newPassword); /* 分配写入流 */ FileWriter fw = new FileWriter(txt); BufferedWriter bw = new BufferedWriter(fw); for (int j = 0; j < list.size(); j++) { bw.write(list.get(j)+"\n"); bw.flush(); } fw.close(); bw.close(); in.close(); System.exit(0); } } System.out.println("您输入的学号不存在!"); System.exit(0); } } 3.用法总结

这种方法对于初学者来说相对来讲比较好理解,当然也存在着很多缺陷,如一直使用循环遍历这种暴力方法,其次是其实可以在读取时就进行修改,但要使用到设置哨兵等方法提高算法,这儿担心读者走马观花却又想收获点什么,仅是使用到了最基本的方法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3