package org.zhy.demo.algorithm;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单 词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61
*
* @author Administrator
*
*/
public class Files {
public static final String FILE_A = "d:\\a.txt"; // A文件
public static final String FILE_B = "d:\\b.txt"; // B文件
public static final String FILE_C = "d:\\c.txt"; // C文件
public static final String HH="#"; //B文件换行分割
public static final String KG="|"; //B文件空格分割
public static void main(String[] args) {
read(KG);
}
public static void read(String type) {
File fileA = new File(FILE_A);
File fileB = new File(FILE_B);
File fileC = new File(FILE_C);
InputStream isA = null;
InputStream isB = null;
try {
isA = new FileInputStream(fileA);
isB = new FileInputStream(fileB);
} catch (IOException e) {
e.printStackTrace();
}
List fileAStr = bufferRead(isA,HH); // 存储A文件每行的单词
List fileBStr = bufferRead(isB,type); // 存储B文件每行的单词
try {
if (fileC.isFile()) {
fileC.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
OutputStream os = null;
try {
os = new FileOutputStream(fileC);
} catch (Exception e) {
e.printStackTrace();
}
try {
while (true) {
if (fileAStr.size() > 0) {
os.write(fileAStr.get(0).getBytes()); // 输出第一行
os.write("\r\n".getBytes()); // 输出换行
fileAStr.remove(0); //删除掉已经读取的单词
}
if (fileBStr.size() > 0) {
os.write(fileBStr.get(0).getBytes()); // 输出第一行
os.write("\r\n".getBytes()); // 输出换行
fileBStr.remove(0);
}
if (fileAStr.size() == 0 && fileBStr.size() == 0) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static List bufferRead(InputStream is,String type) {
List tempList = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String link;
try {
link = br.readLine();
if(type.equals(HH)){
while (link != null) {
tempList.add(link); // 把A文件读取的单词放到list中.
link = br.readLine();
}
return tempList;
}else{
String str = "";
while (link != null) {
// tempList.add(link); // 把A文件读取的单词放到list中.
str=str+link; //添加到字符串中
link = br.readLine();
}
String[] split = str.split(" ");
for(String strtemp : split){
tempList.add(strtemp);
}
return tempList;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}