01 . 目的
用java編程實現刪除txt文檔中的含指定關鍵字的行,代替手動刪除,無需依次查找。將修改的內容存入新的文檔。
相關參考博文:java刪除txt文檔中的空白行
02 . 主要方法
- BufferReader 逐行讀出(reader.readLine( ))待處理文件內容
- line.contains(key) 判斷讀出行中是否包含指定關鍵字
- BufferedWriter 將不含關鍵字的行寫入新文檔
- Runtime.getRuntime( ) 方法調用記事本程序,直接自動打開文檔查看對比
- 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
(命令行參數方式)