我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用Java如何删除文本文件中特定行的内容

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用Java如何删除文本文件中特定行的内容

今天就跟大家聊聊有关使用Java如何删除文本文件中特定行的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

常用的java框架有哪些

1.SpringMVC,Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。2.Shiro,Apache Shiro是Java的一个安全框架。3.Mybatis,MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。4.Dubbo,Dubbo是一个分布式服务框架。5.Maven,Maven是个项目管理和构建自动化工具。6.RabbitMQ,RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。7.Ehcache,EhCache 是一个纯Java的进程内缓存框架。

一、问题的产生

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

在最近使用I/O流写图书馆管理系统中管理员对图书和用户的管理操作时,遇到了需要删除特定图书和用户的操作,在查询资料和询问老师后得知I/O流中没有可以直接删除单独行的方法。

二、解决思路

同时也为我提供了新的思路:将整个文件中的全部内容读取出来,然后通过集合将每一行单独存放,通过查找到集合内特定的内容后,将该行内容删除,此时list集合会自动将后面的内容填补上来,再重新写入的时候不会出现空行的情况。这时再重新遍历一次该集合,将现在的集合内容写入文件中,此时再看文件,已经完成了删除需要删除的特定行内容了!

三、具体解决方法

下面我以我项目中删除书籍的方法为例,具体讲解该如何解决该问题

先看一下我存入的书籍文件:

使用Java如何删除文本文件中特定行的内容

通过上图可以看到,我在写入文件时,每一个属性中间添加了一个“,”作为分隔符,这样我们将文件中内容读取到集合之后可以通过split(","); 直接将文件中读出的每行的内容通过数组的形式将每一个属性分隔开,方便我们通过数组下标直接访问相应的属性。

同时由上图可知:此时我的书籍文件中存在7本书籍,除了红楼梦被“张三”借出外,其他书籍均未被借出。

那我们在删除书籍的时候就会遇到一个问题,若我需要删除的书籍是一本被用户借出的书籍在逻辑上我们应该不允许该书籍被删除。所以在程序设计时我们应该避免删除被用户借出后未归还的书籍。

具体判断逻辑如下:

 

有了程序的具体逻辑之后,我们就可以开始写代码了:

import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class DeleteBook {    private String bookDelete;    String[] bookinf = new String[8];    String[] bookinf1 = new String[8];    public void deleteBook() throws IOException {        File file = new File("书籍.txt");        FileInputStream intput = new FileInputStream(file);        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));        String tempString;//定义一个字符串,每一次读出该行字符串内容        List<String> list = new ArrayList<>();//定义一个list字符串集合用来储存每一行的字符串信息        while ((tempString = reader.readLine()) != null) {            list.add(tempString);        }        System.out.println("==========当前书籍有==========");        //遍历字符串集合        for (String book : list) {            bookinf = book.split(",");//将‘,‘作为分隔符,将字符串分隔开存放进入数组中            System.out.print(bookinf[0] + " ");        }        System.out.println("");        //输入要删除的内容        System.out.println("请输入要删除的书籍名称:");        Scanner scanner = new Scanner(System.in);        bookDelete = scanner.next();        //查询该用户是否有未归还的书籍,如果存在未归还的书籍,将不能删除该用户的信息        FileInputStream inputStream = new FileInputStream(file);        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));        String bookString;        List<String> bookList = new ArrayList<>();        while ((bookString = bufferedReader.readLine()) != null) {            bookList.add(bookString);        }        boolean have = false;//是否存在书籍        for (String borrowUser : bookList) {            bookinf = borrowUser.split(",");            //判断书籍是否存在            if (bookDelete.equals(bookinf[0])) {                have = true;            }            //若该书籍存在,判断书籍对应用户位是否存在用户            //若对应位用户不为“无”,则表示该书籍有人借出,则无法删除该书籍            //同时告知管理员(打印)该书籍被哪位用户借出尚未归还            if (!"无".equals(bookinf[6]) && have) {                System.out.println("该书籍尚未被用户“" + bookinf[6] + "”归还,请在其归还书籍后再进行操作!");                return;            }        }        //若书籍不存在,输出相应信息后直接跳出程序        if (have == false) {            System.out.println("无法找到该书籍,请重新确认后再进行操作!");            return;        }        for (String delBook : list) {            bookinf1 = delBook.split(",");            //找到即将删除的书籍在集合中的位置,将该部分内容从集合中删除,然后清空整个文件            if (bookDelete.equals(bookinf1[0])) {                list.remove(delBook);//在集合中删除该行                FileWriter fd = new FileWriter(file, false);//append传入false表示写入内容时将会覆盖文件中之前存在的内容                fd.write("");//执行删除操作,写入空内容覆盖之前的内容                fd.close();                break;            }        }        //重新遍历一遍更改后的集合,将内容重新写入文件内        for (String user : list) {            bookinf1 = user.split(",");            FileWriter fw = new FileWriter(file, true);//append传入true表示写入内容时将不会覆盖文件中之前存在的内容,将新的内容写在之前内容的后面            fw.write(bookinf1[0] + "," + bookinf1[1] +                    "," + bookinf1[2] + "," + bookinf1[3] +                    "," + bookinf1[4] + "," + bookinf1[5] +                    "," + bookinf1[6] + "," + bookinf1[7]);//执行重新写入内容的操作,将修改过的集合通过数组读下标后,再重新存写入文件中            fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符            fw.close();        }        System.out.println("删除成功!");    }

我们添加一个main方法试运行一下:

public static void main(String[] args) throws IOException {        DeleteBook db = new DeleteBook();        db.deleteBook();    }

运行前文件中的书籍信息:

使用Java如何删除文本文件中特定行的内容

当我们输入一本未被借出的书籍时:

使用Java如何删除文本文件中特定行的内容

此时文件中的书籍信息:

使用Java如何删除文本文件中特定行的内容

可以看到,魔戒已经从文件中消失,在魔戒下一行的霍比特人顶上来了,并未出现空行的情况。

我们再输入一本被借出的书籍,看一看会出现什么情况:

使用Java如何删除文本文件中特定行的内容

可以看到,输出结果是书籍未被用户张三归还,并且文件中的书籍红楼梦没有被删除。

最后我们来输入一本不存在于文件中的书籍:


使用Java如何删除文本文件中特定行的内容

因为之前我们将魔戒从文件中删除,此时无法找到该书籍。

看完上述内容,你们对使用Java如何删除文本文件中特定行的内容有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用Java如何删除文本文件中特定行的内容

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Java如何删除文本文件中特定行的内容

今天就跟大家聊聊有关使用Java如何删除文本文件中特定行的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MV
2023-06-14

php如何删除文本文件内容

这篇文章给大家分享的是有关php如何删除文本文件内容的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php删除文本文件内容的方法:首先创建一个PHP示例文件;然后定义操作文件以及确定要删除的行关键字;接着读取文件数
2023-06-15

python如何删除文件中的指定内容

要删除文件中的指定内容,可以按以下步骤操作:1. 打开文件,读取内容并存储在变量中。2. 使用字符串的 `replace()` 方法,将要删除的内容替换为空字符串。3. 关闭文件。4. 重新打开文件,以写入模式打开。5. 将替换后的内容写入
2023-10-07

sed删除文件中的一行内容的脚本代码

先来看下原始文件的内容: root@localhost ~]# cat file.txthello worlda:b:c -h -na:b:c -h -n sed根据条件删除相关的行: [root@localhost ~]# sed -i
2022-06-04

如何删除临时Internet文件文件夹中的内容

要删除临时Internet文件夹中的内容,请按照以下步骤进行操作:1. 首先,打开文件资源管理器。可以通过按下Win + E组合键或在开始菜单中选择“文件资源管理器”打开。2. 在文件资源管理器中,导航到以下路径:C:\Users\Your
2023-09-08

linux如何删除文件里的内容

在Linux中,可以使用以下命令删除文件的内容:1. `> 文件名` 或者 `echo "" > 文件名`:将一个空字符串写入文件中,从而清空文件内容。2. `truncate -s 0 文件名`:截断文件,将文件大小设置为0,从而清空文件
2023-09-22

如何使用vbs删除host文件域址内容

这篇文章主要讲解了“如何使用vbs删除host文件域址内容”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用vbs删除host文件域址内容”吧!要求:原先host里面已增加以下3行202
2023-06-08

php中如何删除全部文件内容

这篇文章主要为大家展示了“php中如何删除全部文件内容”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php中如何删除全部文件内容”这篇文章吧。php删除全部文件内容的方法:首先创建一个PHP示例
2023-06-15

sed怎么删除文件中的一行内容

这篇文章主要介绍“sed怎么删除文件中的一行内容”,在日常操作中,相信很多人在sed怎么删除文件中的一行内容问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sed怎么删除文件中的一行内容”的疑惑有所帮助!接下来
2023-06-09

怎么使用批处理删除HOSTS中特定内容的行

小编给大家分享一下怎么使用批处理删除HOSTS中特定内容的行,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Q:用bat批处理来删除或者修改hosts中指定的条目,
2023-06-09

怎么在Linux中使用bash命令删除文件中含“指定内容”的行

怎么在Linux中使用bash命令删除文件中含“指定内容”的行?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:#!/bin/sh# 功能: 删除文
2023-06-09

使用Java怎么查找文本特定内容后进行修改

这期内容当中小编将会给大家带来有关使用Java怎么查找文本特定内容后进行修改,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种
2023-06-14

如何利用sed命令高效删除文件的特定行

前言 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的。但是,一旦文件中的行数据非常多,而且数据冗杂的情况下,你还要用上面的方法去做的话
2022-06-04

Linux bash删除文件中含“指定内容”的行功能示例

本文实例讲述了Linux bash删除文件中含“指定内容”的行功能。分享给大家供大家参考,具体如下:#!/bin/sh # 功能: 删除文件中含"指定内容"的行 # 运行方式: ./dline.sh c.log ==> 产生输出文件
2022-06-04

vbs如何删除文本文件的行的函数

这篇文章主要介绍“vbs如何删除文本文件的行的函数”,在日常操作中,相信很多人在vbs如何删除文本文件的行的函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vbs如何删除文本文件的行的函数”的疑惑有所帮助!
2023-06-08

如何使用vbs脚本定时删除N天前的文件

这篇文章主要讲解了“如何使用vbs脚本定时删除N天前的文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用vbs脚本定时删除N天前的文件”吧!脚本放在定时任务里代替服务定时执行一些操作
2023-06-08

如何使用Git在本地删除文件

这篇文章主要介绍了如何使用Git在本地删除文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Git在本地删除文件文章都会有所收获,下面我们一起来看看吧。Git 的删除操作在 Git 中,要删除本地文件,
2023-07-05

如何使用 Git 命令行删除文件

在使用 Git 进行代码管理时,我们会经常遇到需要删除文件的情况,无论是因为文件已经被废弃,还是因为文件内容已被移动到其他文件中,删除文件是一个必要的操作。本文将介绍如何使用 Git 命令行删除文件。1. 删除工作目录中的文件如果要删除工作
2023-10-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录