Java文本处理1-删除空行
1、任务简介
有时候我们从网上下载的文本中会有一些空行,这会对我们做文本行数及字符串的统计造成影响,所以就需要对文本进行预处理来删除空行,从而得到没有空行的文本,本次任务就对空行删除程序的编写进行讲解。
2、基本任务和代码
1)具体思路
(1)首先需要读取一个含有空行的txt文档,在java中读取文件的方法有很多种,例如:1、以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件;2、以字符为单位读取文件,常用于读文本,数字等类型的文件;3、以行为单位读取文件,常用于读面向行的格式化文件。本次任务就需要以行为单位对文档进行读取;
(2)使用InputStreamReader类对字符进行读取,然后使用BufferedReader类实现文本的逐行读出,从而实现对文档的读入;
(3)使用OutputStreamWriter类可以将字符编码为字节流,然后使用BufferedWriter类将字符流写入文本文档中;
2)任务代码
程序保存为shanchu.java,代码如下:
import java.io.*;//导入java.io包中的所有类
import java.util.Scanner;//导入java.util包中的Scanner类
public class shanchu {//类名
public static void main(String[] args) {//程序主函数
try{//try代码块,当发生异常时会转到catch代码块中
Scanner s = new Scanner(System.in);//创建scanner,控制台会一直等待输入,直到敲回车结束
Scanner j = new Scanner(System.in);//创建scanner,控制台会一直等待输入,直到敲回车结束
System.out.println("请输入想要打开的文本文档:");//输入提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
System.out.println("请输入想要写入内容的文本文档:");//输入提示信息
String b = j.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file=new File(b);//用命令行参数直接写入待写入文件
if(!file.exists()) {//if语句的条件,若指定路径下该文件不存在
file.createNewFile();//则在指定路径下新建该文件
}
//创建类进行文件的读取,并指定编码格式为utf-8
InputStreamReader read = new InputStreamReader(new FileInputStream(a),"utf-8");
BufferedReader in = new BufferedReader(read);//可用于读取指定文件
String str = null;//定义一个字符串类型变量str
int i = 0;//定义一个整型变量
//创建类进行文件的写入,并指定编码格式为utf-8
OutputStreamWriter outStream = new OutputStreamWriter(new FileOutputStream(file),"utf-8");
BufferedWriter bw = new BufferedWriter(outStream);//创建BufferedWiter类对象
while((str = in.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
if(str.equals("")) {//if语句的条件
continue;//该行为空时不进行任何操作
}else {//否则
i++;
// bw.write("["+i+"]");//可在文档中标出行号(有需要时可以取消该注释)
bw.write(str+"\r\n");//在新文档中写入指定内容
}
}
bw.close();//关闭流
in.close();//关闭流
System.out.println("所需内容已写入指定文档!");//输出提示信息
}catch(Exception e) {//当try代码块有异常时转到catch代码块
e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
}
}
}
3)运行结果
(1)我使用的txt文档如下:
(2)在命令行对程序进行编译,然后对文档进行处理后保存,路径均为D:\demo1,具体如下:
(3)进入路径D:\demo1下打开xyj.txt文件,显示如下:
由此可见处理后的文档中就没有了空行,对于我们以后做文本行数的统计和文本字符数的统计带来了方便。
3、总结
在使用javac对java文件进行编译时有可能出现以下错误:
这是由于字符的编码问题造成的,此时我们只需要将编译语句改为 javac -encoding UTF-8 XXX.java(其中XXX自行替换为文件名)就可以解决该问题。
通过本次任务的处理,我们可以得到一个不含有空行的文本文档,这对后续的文本处理带来了方便。