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

  介绍

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

常用的Java框架有哪些

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

一、问题的产生

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

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

二,解决思路

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

三,具体解决方法

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

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

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

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

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

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

<强>具体判断逻辑如下:

,/* *   ,,,,*,对书籍. txt文件中特定的书籍进行删除:   ,,,,*,1。读出文件中的内容,将其存放在一个字符串类型的集合中   ,,,*,2。通过分隔符将集合的每一位分割开存放到数组中   ,,,*,3。通过数组下标查找是否有该书籍   ,,,,*,否:   ,,,,*,输出信息,跳出程序返回;   ,,,,*,是:   ,,,,*,4。通过数组下标查找该书是否有人借阅   ,,,,*,是:   ,,,,*,输出信息,跳出程序返回;   ,,,,*,否:   ,,,,*,5。通过遍历删除集合中该位所对应的内容   ,,,,*,6。将更新后的集合信息写入文件中,完成删除书籍操作   ,,,,*/

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

import  . io . *;   import  java.util.ArrayList;   import 并不知道;   import  java.util.Scanner;      public  class  DeleteBook  {      ,,,private  String  bookDelete;   ,,,String [], bookinf =, new 字符串[8];   ,,,String [], bookinf1 =, new 字符串[8];      ,,,public  void  deleteBook (), throws  IOException  {   ,,,,,,,File  File =, new 文件(“书籍.txt");   ,,,,,,,FileInputStream  intput =, new  FileInputStream(文件);   ,,,,,,,BufferedReader  reader =, new  BufferedReader (new  InputStreamReader(输入));   ,,,,,,,String  tempString;//定义一个字符串,每一次读出该行字符串内容   ,,,,,,,List, list =, new  ArrayList<在();//定义一个列表字符串集合用来储存每一行的字符串信息   ,,,,,,,while  ((=tempString  reader.readLine ()), !=, null), {   ,,,,,,,,,,,list.add (tempString);   ,,,,,,,}   ,,,,,,,System.out.println(“==========当前书籍有==========?;   ,,,,,,,//遍历字符串集合   ,,,,,,,for  (String  book :列表),{   ,,,,,,,,,,,bookinf =, book.split(“”);//将”、“作为分隔符,将字符串分隔开存放进入数组中   ,,,,,,,,,,,System.out.print (bookinf [0], +,“,“);   ,,,,,,,}   ,,,,,,,System.out.println (“;”);   ,,,,,,,//输入要删除的内容   ,,,,,,,System.out.println(“请输入要删除的书籍名称:“);   ,,,,,,,Scanner  Scanner =, new 扫描仪(系统);   ,,,,,,,bookDelete =, scanner.next ();      ,,,,,,,//查询该用户是否有未归还的书籍,如果存在未归还的书籍,将不能删除该用户的信息   ,,,,,,,FileInputStream  inputStream =, new  FileInputStream(文件);   ,,,,,,,BufferedReader  BufferedReader =, new  BufferedReader (new  InputStreamReader (inputStream));   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

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