【java文本处理】(续)删除txt文档中的包含(contains)指定字符串的行

01 . 目的

        用java编程实现删除txt文档中的含指定关键字的行,代替手动删除,无需依次查找。将修改的内容存入新的文档。

相关参考博文:java删除txt文档中的空白行

02 . 主要方法

  • BufferReader 逐行读出(reader.readLine( ))待处理文件内容
  • line.contains(key) 判断读出行中是否包含指定关键字
  • BufferedWriter 将不含关键字的行写入新文档
  • Runtime.getRuntime( ) 方法调用记事本程序,直接自动打开文档查看对比

Runtime类使用案例

  • contains( )方法详解:
    java中contains方法是判断是否存在包含关系,比如说a =[1,2,3,4], b=1那么a就包含b;
    contains返回的是布尔类型true 和false,包含的话就返回true,不包含的话就返回false;
public class Contains {

    public static void main(String[] args) {
        String a = "每天都是美好的一天";
        String b = "美好";
		String c = "快乐";
        //boolean m = a.contains(b);
		//boolean n = a.contains(c);
        System.out.println("a.contains(b):"+a.contains(b));
		System.out.println("a.contains(c):"+a.contains(c));
    }
}

演示:
Contains.java
在这里插入图片描述

03 . 源程序

Black_line.java

/*
* 利用命令行参数直接输入文件名
* 读待处理文件,判断是否是txt文档,判断文件是否存在;
* 以行读出文件,if判断行中是否含指定关键字,不含则写入新文件
* 调用记事本应用程序,打开指定文档
* @author WTCLAB_yd
*/

import java.io.*;
public class Black_line
{
	public static void main(String[] args)
	{
		String line=null;
		int i=0;
		File file=new File(args[0]);//用命令行参数直接写入待处理文件
		File file1=new File(args[1]);
		//判断输入的是否是TXT文档,不是则提示退出
		if(args[0].endsWith("txt") && args[1].endsWith("txt"))
		{
			//判断输入的文档是否存在,不存在则提示退出
				if(!file.exists())
				{
					System.out.println("文件不存在!");
					System.exit(0);
		
				}
			//输入的是TXT文档则继续往下执行		
		try
		{
			Runtime.getRuntime().exec("notepad "+args[0]);//打开待处理文件
			//读出文档数据流方式
			InputStreamReader Stream=new InputStreamReader(new FileInputStream(file),"UTF-8");//读入数据流方式设为‘UTF-8’,避免乱码
			//构造一个字符流的缓存器,存放在控制台输入的字节转换后成的字符
			BufferedReader reader=new BufferedReader(Stream);
			//写入数据流方式
			OutputStreamWriter outStream=new OutputStreamWriter(new FileOutputStream(file1),"UTF-8");
			BufferedWriter writer=new BufferedWriter(outStream);
			//以行读出文档内容至结束
			while((line=reader.readLine())!=null)
			{
	          if(line.contains("Page") || line.equals(""))//判断是否是空行或包含关键字"Page"
			  {
				  continue;//是则不进行操作
		      }	
			  else
			  {
				  i++;
				  writer.write("["+i+"]");//可在文档中标出行号
				  writer.write(line+"\r\n");//将非空白行写入新文档				
			  }
				
			}
			//关闭数据流
			writer.close();
			reader.close();
			System.out.println("修改完成!");
			
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}	
		
		try{
			//打开修改后的文档
			Runtime.getRuntime().exec("notepad "+args[1]);	
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}	
		}
		else
		{ 
			System.out.println("输入错误!(非.txt)");
			System.exit(0);
		}	
	}	
}

04 . 结果

hlm.txt是待处理文档,rrhml.txt是修改后的文档,会自动生成,无需自行新建。
执行 :java Black_line hlm.txt rrhlm.txt
(命令行参数方式)

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值