java读取txt的数据并处理

比如一个文件里是以下内容,怎样把这个文件用java读出来,然后进行接下来的处理。把含有genotype的留下,含recombinant的移除,再输出文件>gi|13377... 比如 一个 文件里 是以下内容,怎样把这个文件用java 读出来,然后进行接下来的处理。把含有genotype 的留下,含recombinant的移除,再输出文件
>gi|133778402|dbj|AB298362.1| HBV genotype H DNA, complete genome, isolate: HBV ST0404
>gi|399923474|emb|HE974373.1| HBV genotype D4 complete genome, isolate Mart-B37
>gi|399923529|emb|HE974384.1| HBV genotype E complete genome, isolate Mart-B84
>gi|349731646|dbj|AB644282.1| HBVrecombinant B/C DNA, complete genome, isolate: NAB20
展开
 我来答
nsrainbow
推荐于2017-10-15 · TA获得超过5195个赞
知道大有可为答主
回答量:2151
采纳率:0%
帮助的人:1675万
展开全部

直接给你一段实际可以用的代码吧

 /**
  * 读取一行一行的文件
  * 
  * @param filename
  * @return
  * @throws IOException
  */
 public static List<String> readLinedFile(String filename){
  List<String> filecon = new ArrayList<String>();
  String m = "";
  BufferedReader file = null;
  try{
   file = new BufferedReader(new FileReader(filename));
   while ((m = file.readLine()) != null) {
    if (!m.equals("")) // 不需要读取空行
    {
     filecon.add(m);
    }
   }
   file.close();
  }catch(IOException e){
   e.printStackTrace();
  }
  
  return filecon;
 }

这段代码实现了,你传入文件的路径,给你读出一个String的List,一个String就是文件的一行,拿到这个List,你爱怎么处理就怎么处理,就比如你现在这个需求吧,就把这个List拿来遍历

//这个是去除不含genotype字符串后的数组
List<String> resultList = new ArrayList<String>();
for(String line:filecon){
  if(line.indexOf("genotype") != -1){
    resultList.add(line);
  }
}

这样处理完后就拿到了一个只有含有 genotype的数组,然后剩下的就是把这个数组写到一个文件里面,我给你看一个把字符串数组写到文件的方法,你可以拿去直接用

 /**
  * 写入一行一行的文件
  * @param lst 要写入的字符串数组
  * @param filename 要写入的文件路径
  * @return
  * @throws IOException
  */
 public static void writeLinedFile(List lst, String filePath) throws IOException {
  File file = new File(filePath);
  BufferedWriter out = new BufferedWriter(new FileWriter(file, false));
  for (int i = 0; i < lst.size(); i++) {
   String temp = (String) lst.get(i);
   if (!StringUtils.isBlank(temp)) {
    out.write(temp);
    out.newLine();
   }
  }
  out.close();
  out = null;
  file=null;
 }

这样懂了吧?

lkstarsea
2013-07-23 · TA获得超过315个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:188万
展开全部
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IOTest {

public static void main(String[] args) {

try {
//文件路径添你自己的
String fileName="d:/demo.txt";
File f=new File(fileName);
InputStream in=new FileInputStream(f);
byte[] b=new byte[1024];
int count =0;
int temp=0;
while((temp=in.read())!=(-1)){
b[count++]=(byte)temp;
}
in.close();

String str = new String(b);
String[] strs = str.split("\n");

List<String> list = new ArrayList<String>();
//把包含genotype添加的一个list中
for(int i=0;i<strs.length;i++){
String regEx1 = "genotype";
Pattern pat1 = Pattern.compile(regEx1);
Matcher mat1 = pat1.matcher(strs[i]);
if(mat1.find()){
list.add(strs[i]);
}
}
//从list中把包含recombinant删除
for (String string : list) {
String regEx2 = "recombinant";
Pattern pat2 = Pattern.compile(regEx2);
Matcher mat2 = pat2.matcher(string);
if(mat2.find()){
list.remove(string);
}
}
//文件输出在d盘demo_result.txt文件中
FileWriter fw = new FileWriter(new File("d:/demo_result.txt"));
for (String string:list) {
fw.write(string);
fw.write("\r\n");
}
fw.close();
System.out.println("----完成----");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风神静
2013-07-24
知道答主
回答量:17
采纳率:0%
帮助的人:15.1万
展开全部
  public static void main(String[] args) throws Exception{
  File f = new File("读取文件路径");
  BufferedReader br = new BufferedReader(new InputStrea
mReader(new FileInputStream(f)));
  FileOutputStream out = new FileOutputStream("输出文件路径");
  String line;
  while(true){
  line = br.readLine();
  if(line == null || "".equals(line))
  break;
  if(line.indexOf("genotype") >=0){
  System.out.println(line);
  line+="\n";
  out.write(line.getBytes());
  }else if(line.indexOf("recombinant") >=0){
  System.err.println(line);
  }
  }
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aoisora_blue
2013-07-23 · TA获得超过412个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:366万
展开全部
用bufferReader读行,用String的contains方法判断是否包含,输出就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式