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查找文本内容进行修改内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java实现查找文本内容替换功能示例

    思路: 先看视图层,要有一个JButton控件用来选择文件,一个JTextField控件显示选中文件的绝对路径,一个JLabel控件提示用户输入搜索文本,一个JLabel控件提示用户输入替换后的文本,一个JTextField标签供用户输入要搜索的文本,一个JTextField标签供用户输入替换后的文本,一个JButton控件执行替换,一个JButton控件用来打开修改后的文件.对于选择文件按钮,使用JButton类的addActionListener()方法为其绑定事件,在该事件中定义actio

  • java解析{{}}变量名以及文本内容替换操作

    发短信.发邮件的时候经常会遇到模板内容需要替换成实际数据的问题,本文介绍从文本模板中解析出变量列表,以及参数填入后得到实际文本内容的办法: /** * 根据正则表达式获取文本中的变量名列表 * @param pattern * @param content * @return */ public static List<String> getParams(String pattern, String content) { Pattern p = Pattern.compile(pattern)

  • 使用Java把文本内容转换成网页的实现方法分享

    先以简单的文件读写实现为基础,FileHelper类中的readFile方法用于读取文件内容,writeFile方法用于向文件中写入内容. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class FileHelper { public static String readFile(String f

  • Java实战之基于I/O流设计的图书管理系统

    一.前言 当前,我还没有学到数据库相关的知识,想要完全通过Java来完成一个可以存储数据的图书馆管理系统就只能使用I/O流的知识,将内容都保存到文件中,再进行增删改查的操作,这就很考验我们的Java基础知识掌握能力. 二.项目介绍 Java基本语法的掌握 流程控制语句的熟练使用 面向对象思想的理解 能否熟练使用封装.继承.多态 接口.异常的熟悉 集合的使用 是否熟悉掌握I/O流相关操作 三.项目说明 传统的人工管理图书馆流程繁琐,我们需求设计一个图书馆管理系统来方便学生借书以及管理员管理书籍 系

  • Java(springboot) 读取txt文本内容代码实例

    这篇文章主要介绍了Java(springboot) 读取txt文本内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public class TxtTest { private static final Logger logger = LoggerFactory.getLogger(TxtTest.class); public static String readTxt(File file) throws IOExcepti

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

    一.问题的产生 基于I/O流编写的图书馆管理系统 在最近使用I/O流写图书馆管理系统中有修改图书信息的部分,以及借书和还书等多个部分内容都需要对文本中的特定位置的内容进行精确查找并修改,在查阅资料和同学讨论后最终将该问题解决了. 二.问题的解决 下面通过修改密码为例,演示一下该方法的实现: 具体代码: String filePath = "用户信息.txt"; User modifyFile = new User(); System.out.println("请输入原密码:&

  • Java基础知识杂文

    1.基本概念 IO是主存和外部设备(硬盘.终端和网络等)拷贝数据的过程.IO是操作系统的底层功能实现,底层通过I/O指令进行完成. 所有语言运行时系统提供执行I/O较高级别的工具.(c的printfscanf,java的面向对象封装) 2.Java标准io回顾 Java标准IO类库是io面向对象的一种抽象.基于本地方法的底层实现,我们无须关注底层实现.InputStream\OutputStream(字节流):一次传送一个字节.Reader\Writer(字符流):一次一个字符. 3.nio简介

  • Java对象和Json文本转换工具类的实现

    目录 安装 下载源码 编译源码 添加依赖 Java对象 基本数据类型 数组 列表 字典 类 Java对象转换为Json文本 基本数据类型 数组 列表 字典 类 Json文本转换为Java对象 基本数据类型 数组 列表 字典 类 Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd durian/ 切换至最新版本(Tag),如:0.4, git chec

  • Java基础之删除文本文件中特定行的内容

    一.问题的产生 基于I/O流编写的图书馆管理系统 在最近使用I/O流写图书馆管理系统中管理员对图书和用户的管理操作时,遇到了需要删除特定图书和用户的操作,在查询资料和询问老师后得知I/O流中没有可以直接删除单独行的方法. 二.解决思路 同时也为我提供了新的思路:将整个文件中的全部内容读取出来,然后通过集合将每一行单独存放,通过查找到集合内特定的内容后,将该行内容删除,此时list集合会自动将后面的内容填补上来,再重新写入的时候不会出现空行的情况.这时再重新遍历一次该集合,将现在的集合内容写入文件

  • Java递归查找层级文件夹下特定内容的文件的方法

    目录 递归查找文件 引言 根据特定内容寻找文件位置 根据文件类型和文件名关键字查找相关文件 Tips 递归查找文件 引言 或许是文件太多,想找某个文件又忘记放哪了;又或者是项目改造,需要将外部调用接口进行改造,项目太多,又无法排查.那么怎么快速找到自己想要的内容就是一件值得思考的事情了. 根据特定内容寻找文件位置 package com.lizi.globalexception.Utils; import java.io.BufferedReader; import java.io.File;

  • jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法

    本文实例讲述了jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法.分享给大家供大家参考,具体如下: JS鼠标双击事件 onDblClick <td width="10%" title="双击修改" ondblclick="ShowElement(this,<%#Eval("id") %> </td> 这里的本人用绑定的值是传的当前行对应的ID号 function ShowEle

  • Java正则表达式实现在文本中匹配查找换行符的方法【经典实例】

    本文实例讲述了Java正则表达式实现在文本中匹配查找换行符的方法.分享给大家供大家参考,具体如下: 默认情况下,正则表达式 ^ 和 $ 忽略行结束符,仅分别与整个输入序列的开头和结尾匹配.如果激活 MULTILINE 模式,则 ^ 在输入的开头和行结束符之后(输入的结尾)才发生匹配.处于 MULTILINE 模式中时,$ 仅在行结束符之前或输入序列的结尾处匹配. NLMatch.java: package nlMatch; import java.util.regex.Pattern; /**

  • JAVA过滤标签实现将html内容转换为文本的方法示例

    本文实例讲述了JAVA过滤标签实现将html内容转换为文本的方法.分享给大家供大家参考,具体如下: /** * 把html内容转为文本 * @param html 需要处理的html文本 * @param filterTags 需要保留的html标签样式 * @return */ public static String trimHtml2Txt(String html, String[] filterTags){ html = html.replaceAll("\\<head>[\

  • jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法

    本文实例讲述了jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法.分享给大家供大家参考,具体如下: 一.先描述下可以实现什么: 下拉框一改变,弹出框出现,选择弹出框中的值会赋值给下拉菜单 二.代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Subscribe策略</ti

随机推荐