编程题目:
5.编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
示例代码:
package program.stream.exercise05;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
/**
* 5.编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,
* a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
*/
public class FileCombine {
public static void main(String[] args) throws Exception {
//注意:在java等编程语言中,反斜杠\具有转义的特殊作用,比如\t表示制表符,\n表示回车,
//所以如果你想在字符串里使用\的本意,就要用双反斜杠,即\\才表示\
//相对路径(Eclipse默认生成文件位于项目名下即路径写到src处)
FileManager a = new FileManager("src\\program\\stream\\exercise05\\a.txt",new char[]{'\n'});
FileManager b = new FileManager("src\\program\\stream\\exercise05\\b.txt",new char[]{'\n',' '});
Writer c = new FileWriter("src\\program\\stream\\exercise05\\c.txt");
//绝对路径
//FileWriter c = new FileWriter("D:\\Eclipse SE\\workspace\\Java Program\\src\\program\\stream\\exercise05\\c.txt");
String aWord = null;
String bWord = null;
//a.txt和b.txt文件内容依次放入c.txt文件中
while((aWord = a.nextWord()) != null ){
c.write(aWord + "\n");//每个单词用回车符分隔
if((bWord = b.nextWord()) != null){
c.write(bWord + "\n");
}
}
System.out.println("写入完成!");
//关闭I/O流,不可少
c.close();
}
}
//文件管理类
class FileManager {
private int index;//单词数组下标
private String[] words;//单词数组
public FileManager(String fileName,char[] seperators) throws Exception {
File file = new File(fileName);
Reader reader = new FileReader(file);
char[] cs = new char[(int) file.length()];//定义一个字符数组,长度即是文件内容的长度
int length = reader.read(cs);//有效字符数组长度
String results = new String(cs,0,length);//将文件内容转换成字符串
String regex = null;//分隔符
if(seperators.length > 1 ){
regex = "" + seperators[0] + "|" + seperators[1];//将分隔符转换成字符串,以便于分割
}else{
regex = "" + seperators[0];
}
words = results.split(regex);//将整个结果字符串分割成单词数组
reader.close();
}
//获取下一个单词
public String nextWord(){
if(index == words.length){
return null;
}
return words[index++];
}
}
结果显示: