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
(命令行参数方式)