编写一个Java程序,按行读入一个文本文件,取出介于用分隔符之间的连续的字符串作为单词,将每个单词作为一行输出到一个文件中。
问题分析和解决方案:
(1)打开文本文件,逐行读入文本文件的内容;
(2)对每一行,使用分割字符串的函数,从空白付出切割单词;
(3)忽略长度为0的单词(空串);
(4)将单词按顺序逐个输出;
(5)考虑文本文件的编码;
(6)输入和输出文件名通过命令行输入。
编码一个包文件:
<1>建立项目。
创建Java项目“Stream”。
<2>创建包。
在Java项目“Stream”的“src”之下,创建包“com.elephant.stream”。
<3>创建类。
再包“com.elephant.stream”中,创建类“Testtoword ”。
编写程序如下:
package com.elephant.stream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Testtoword{
public static void main(String[] args){
/*检查是否输入两个文件名:输入文件名和输出文件名*/
if(args.length != 2){
System.out.println("请输入两个文件名!!!");
}else{
/*step1:获得输入输出文件名*/
String infile = args[0];//输入文件名
String outfile = args[1];//输出文件名
try{
/*step2:打开输入文件*/
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(infile),"GBK"));
String lineBuffer;
/*step3:分解单词:分解后的单词,临时存放在对象words中*/
StringBuffer words = new StringBuffer();
while ( null != (lineBuffer = br.readLine())){
String[] word = lineBuffer.replaceAll("\t"," ").split(" ");
for (int i = 0; i < word.length; i++)
if(word[i].trim().length() > 0)
words.append(word[i] + "\r\n");
}
br.close();
/*step4:分解结果写入输出文件*/
FileOutputStream fos = new FileOutputStream(outfile);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos,"GBK"));
bw.write(words.toString());
bw.close();
}catch (Exception e){
System.out.println("文件处理发生错误!!!");
System.out.println("输入文件名:" + infile);
System.out.println("输出文件名:" + outfile);
System.out.println("错误信息:" + e.getMessage());
}
}
}
}