【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
(命令行參數方式)

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章