Java基础之查找文本特定内容后进行修改

 更新时间:2021年04月20日 14:42:09   作者:没谱的曲  
这篇文章主要介绍了Java基础之查找文本特定内容后进行修改,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下

一、问题的产生

基于I/O流编写的图书馆管理系统

在最近使用I/O流写图书馆管理系统中有修改图书信息的部分,以及借书和还书等多个部分内容都需要对文本中的特定位置的内容进行精确查找并修改,在查阅资料和同学讨论后最终将该问题解决了。

二、问题的解决

下面通过修改密码为例,演示一下该方法的实现:

具体代码:

	String filePath = "用户信息.txt";
                User modifyFile = new User();
                System.out.println("请输入原密码:");
                String oldString = sc.next();
                //如果输入的原密码不正确,无法进行修改,如果正确,才能进行修改
                if (oldString.equals(userinf[1])) {
                    System.out.println("请输入新密码:");
                    String newString = sc.next();
                    boolean result = modifyFile.writeFile(filePath, modifyFile.readFileContent(userinf, filePath, userinf[1], newString));// 修改文件中密码

//            如果修改结果为true,进行修改成功提示,否则提示修改失败
                    if (result == true) {
                        System.out.println("修改成功,请重新登录!");
                        return;
                    } else {
                        System.out.println("修改错误,请检查后重新修改!");
                    }
                } else {
                    System.out.println("输入错误,请检查后重新进行修改!");
                }

其中userinf为其他类中传入的参数,主要作用是为了进行判断密码是否正确,具体代码可以查看基于I/O流编写的图书馆管理系统

我们注意到上述代码中有一行为:

modifyFile.writeFile(filePath, modifyFile.readFileContent(userinf, filePath, userinf[1], newString));// 修改文件中密码

该行代码调用的两个方法才是解决本文内容的关键方法

具体实现如下:

// 读文件
    public String readFileContent(String[] userinf, String filePath, String oldString, String newString) {
        Scanner sc = new Scanner(System.in);
        BufferedReader br = null;
        String line = null;
        StringBuffer bufAll = new StringBuffer();// 保存修改过后的所有内容
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));

            while ((line = br.readLine()) != null) {
                StringBuffer buf = new StringBuffer();
                // 修改内容核心代码
                String[] userinf2 = line.split(",");
                if (userinf2[0].equals(userinf[0])) {//判断条件根据自己的要求修改
                    buf.append(line);
                    int indexOf = line.indexOf(oldString);
                    buf.replace(indexOf, indexOf + oldString.length(), newString);// 修改内容
                    buf.append(System.getProperty("line.separator"));// 添加换行
                    bufAll.append(buf);
                } else {
                    buf.append(line);
                    buf.append(System.getProperty("line.separator"));
                    bufAll.append(buf);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                    br = null;
                }
            }
        }
        return bufAll.toString();
    }

    // 写文件
    public boolean writeFile(String filePath, String content) {
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
            bw.write(content);
            bw.flush();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    bw = null;
                }
            }
        }
        return true;
    }

通过上述方法可以找到文本中对应行中当前信息所对应的位置,然后将newString替换为oldString

如下所示:

以下为当前用户信息:

当前用户信息
修改密码
在操作中就行了修改密码,此时我们再查看文件中张三所对应的密码
修改后的密码

此时密码已经被修改为1234

到此这篇关于Java基础之查找文本特定内容后进行修改的文章就介绍到这了,更多相关java查找文本内容进行修改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JVM入门之内存结构(堆、方法区)

    JVM入门之内存结构(堆、方法区)

    JVM 基本上是每家招聘公司都会问到的问题,它们会这么无聊问这些不切实际的问题吗?很显然不是。由 JVM 引发的故障问题,无论在我们开发过程中还是生产环境下都是非常常见的
    2021-06-06
  • springmvc html资源请求404的问题解决并分析

    springmvc html资源请求404的问题解决并分析

    这篇文章主要介绍了springmvc html资源请求404的问题解决并分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 解析Spring事件发布与监听机制

    解析Spring事件发布与监听机制

    本篇文章给大家介绍Spring事件发布与监听机制,通过 ApplicationEvent 事件类和 ApplicationListener 监听器接口,可以实现 ApplicationContext 事件发布与处理,需要的朋友参考下吧
    2021-06-06
  • java用接口、多态、继承、类计算三角形和矩形周长及面积的方法

    java用接口、多态、继承、类计算三角形和矩形周长及面积的方法

    这篇文章主要介绍了java用接口、多态、继承、类计算三角形和矩形周长及面积的方法,涉及java面向对象中类、接口、多态等的使用技巧,需要的朋友可以参考下
    2015-05-05
  • 深入学习SpringCloud之SpringCloud简介

    深入学习SpringCloud之SpringCloud简介

    Spring Cloud是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集,本文给大家介绍springcloud的相关知识,感兴趣的朋友跟随一起看看吧
    2021-04-04
  • java 判断两个对象是否为同一个对象实例代码

    java 判断两个对象是否为同一个对象实例代码

    这篇文章主要介绍了java 判断两个对象是否为同一个对象实例代码的相关资料,需要的朋友可以参考下
    2016-12-12
  • Java Collections.sort()实现List排序的默认方法和自定义方法

    Java Collections.sort()实现List排序的默认方法和自定义方法

    这篇文章主要介绍了Java Collections.sort()实现List排序的默认方法和自定义方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • spring boot 开发soap webservice的实现代码

    spring boot 开发soap webservice的实现代码

    这篇文章主要介绍了spring boot 开发soap webservice的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • java中CompleteFuture与Future的区别小结

    java中CompleteFuture与Future的区别小结

    本文主要介绍了java中CompleteFuture与Future的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • 详谈Enumeration接口和Iterator接口的区别

    详谈Enumeration接口和Iterator接口的区别

    下面小编就为大家带来一篇详谈Enumeration接口和Iterator接口的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论