利用IO流对文件的修改,以BufferedReader&BufferedWriter字符流为例 |
您所在的位置:网站首页 › java替换文件内容行 › 利用IO流对文件的修改,以BufferedReader&BufferedWriter字符流为例 |
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 |