1、任务简介

在上一节中对原版《西游记》进行文本处理后得到了一个不含空行的文本文档,在此基础上我需要在文本的每一个字符后分别添加斜杠/和空格,具体操作见下文。


2、基本任务和代码

(1)任务1

1)任务内容

在文本的每一个字符后添加斜杠/。

2)具体思路

(1)对于读取文档的方法以及InputStreamReader类、OutputStreamWriter类、BufferedReader类、BufferedWriter类等在上一节中已有讲解,具体如下:

使用InputStreamReader类对字符进行读取,然后使用BufferedReader类实现文本的逐行读出,从而实现对文档的读入;

使用OutputStreamWriter类可以将字符编码为字节流,然后使用BufferedWriter类将字符流写入文本文档中;

(2)本次任务依然要对文档逐行读出,并定义一个整形变量i,当i小于该行长度时就一直处于for循环中并自增,然后使用append()方法和charAt()将读取到的字符逐个写入新文档中,并在每一次循环中使用append()方法插入斜杠/;

3)任务代码

程序保存为plus1.java,具体代码如下:

import java.io.*;//导入java.io包中的所有类
import java.util.Scanner;//导入java.util包中的Scanner类
public class plus1 {//类名
	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()方法, 用于读取一行,只要读取内容不为空就一直执行
				for(i = 0;i < str.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
					bw.append(str.charAt(i));//在新文档中逐次插入每一个字符
					bw.append("/");//在每一个字符后插入斜杠/
				}
				if(i == str.length()){//if语句的条件
					bw.append("\r\n");//当i等于一行的最大长度时就进行换行操作
				}
			}
			bw.close();//关闭流
			in.close();//关闭流
			System.out.println("所需内容已写入指定文档!");//输出提示信息	
		}catch(Exception e) {//当try代码块有异常时转到catch代码块
			e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
		}			
	}
}

4)运行结果

(1)所有路径均保存为D:\demo2,我使用的txt文档如下:
Java文本处理2-字符加斜杠、空格

(2)在命令行对程序进行编译,然后对文档进行处理后保存,具体如下:
Java文本处理2-字符加斜杠、空格

(3)打开路径下的xyj1.txt文件如下:
Java文本处理2-字符加斜杠、空格

从图中可以看出,已经成功在每一个字符后添加了斜杠/;


(2)任务2

1)任务内容

在文本的每一个字符后添加空格。

2)具体思路

本任务与任务1不同之处仅仅在于只需要将while循环中的bw.append("/");改为bw.append(" ");即可;

3)任务代码

程序保存为plus2.java,具体代码如下:

import java.io.*;//导入java.io包中的所有类
import java.util.Scanner;//导入java.util包中的Scanner类
public class plus2 {//类名
	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()方法, 用于读取一行,只要读取内容不为空就一直执行
				for(i = 0;i < str.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
					bw.append(str.charAt(i));//在新文档中逐次插入每一个字符
					bw.append(" ");//在每一个字符后插入空格
				}
				if(i == str.length()){//if语句的条件
					bw.append("\r\n");//当i等于一行的最大长度时就进行换行操作
				}
			}
			bw.close();//关闭流
			in.close();//关闭流
			System.out.println("所需内容已写入指定文档!");//输出提示信息	
		}catch(Exception e) {//当try代码块有异常时转到catch代码块
			e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
		}			
	}
}

4)运行结果

(1)所有路径均保存为D:\demo2,我使用的txt文档与任务1相同;

(2)在命令行对程序进行编译,然后对文档进行处理后保存,路径均为D:\demo2,具体如下:
Java文本处理2-字符加斜杠、空格
(3)进入路径D:\demo2下打开xyj2.txt文件,显示如下:
Java文本处理2-字符加斜杠、空格
从图中可以看出,已经成功在每一个字符后添加了空格;


3、总结

本次任务实现了在文本的每一个字符后面添加斜杠/和空格,如果想添加其他符号或内容只需要将bw.append("/");引号中的内容修改即可。这些任务是后面任务的基础,我会在不断学习的同时将后面的任务顺利完成。

相关文章: