分享

java IO操作 按照规律合并两个txt文件

 liandan 2012-11-06

java IO操作 按照规律合并两个txt文件

 

题目 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单 词用回车符分隔,b.txt文件中用回车或空格进行分隔。


实现代码


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<String> fileAStr = bufferRead(isA,HH); // 存储A文件每行的单词
  List<String> 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<String> bufferRead(InputStream is,String type) {
  List<String> tempList = new ArrayList<String>();
  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;
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多