Fasta文件是生物信息领域储存核酸和氨基酸序列最常用的文件格式之一。其基本形式由带“>”的序列注释标签和单个字母表示的核酸或者氨基酸组成。

在利用Rosalind学习java生物信息编程时,经常需要读取fasta文件。之前读取此类文件,采用的是读取后转化为字符串形式进行输出和后继处理,读取fasta文件的原代码如下:

 //定义方法,输入文本文件路径,以字符串类型返回文本内容public static String readFileContent(String fileName) {File file = new File(fileName);BufferedReader reader = null;StringBuffer sbf = new StringBuffer();try {reader = new BufferedReader(new FileReader(file));String tempStr;while ((tempStr = reader.readLine()) != null) {sbf.append(tempStr);}reader.close();return sbf.toString();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {e1.printStackTrace();}}}return sbf.toString();}

调用上述子方法后fasta文件能够变为字符串变量并存储于内存中,但是开头的注释信息和序列信息都会变成统一的字符串形式,难舍难分。还需要额外创建子方法来去掉注释信息,相当麻烦。因此代码需要进一步改进:

此处我们采用ArrayList集合,调用BufferedReader对fasta进行逐行读取。读取之后利用正则表达式匹配">"开头的注释标签行,存储到ArrayList fasta中。而注释标签行存储到ArrayList tag中。

//改进后读取fasta文件代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;public class readline_txt_method {public static void main(String[] args) {ArrayList<String> fasta = BufferedReader("C:/Users/Administrator/Desktop/sequence.fasta","tag");//设置返回值是标签名称还是碱基序列。for (int i = 0; i < fasta.size(); i++) {System.out.println(fasta.get(i));//按照索引输出集合元素,从0位开始。}}public static ArrayList<String> BufferedReader(String path,String choose) {//返回值类型是新建集合大类,此处是Set而非哈希。BufferedReader reader;ArrayList<String> tag = new java.util.ArrayList<String>();ArrayList<String> fasta = new java.util.ArrayList<String>();try {reader = new BufferedReader(new FileReader(path));String line = reader.readLine();while (line != null) {//多次匹配带有“>”的行,\w代表0—9A—Z_a—z,需要转义。\W代表非0—9A—Z_a—z。if (line.matches(">[\\w*|\\W*]*")){tag.add(line);}else{fasta.add(line);}// read next lineline = reader.readLine();}reader.close();} catch (IOException e) {e.printStackTrace();}if (choose.equals("tag")){return tag;}return fasta;}
}

Java逐行读取fasta文件相关推荐

  1. java逐行读取文件_Java逐行读取文件

    java逐行读取文件 Today we will look into different java read file line by line methods. Sometimes we have ...

  2. 如何使用Java逐行读取大文本文件?

    我需要使用Java逐行读取大约5-6 GB的大型文本文件. 我如何快速做到这一点? #1楼 这是一个示例,该示例具有完整的错误处理并支持Java 7之前的字符集规范.使用Java 7,您可以使用try ...

  3. java中读取properties文件内容五种方式

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  4. Java高效读取大文件(转)

    Java高效读取大文件 1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung(http://www.baeldung.com/) 上"Java--回归基础&quo ...

  5. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  6. java解析txt文本文件_java读取文本文件内容方法详解,java如何读取txt文件?

    你知道java读取文本文件内容方式都有哪些吗?下面要给大家分享的就是比较简单的方法,一起来了解一下吧. 如何使用java实现读取TXT文件里的内容的方法以及思路: 下面先来看一下例子:import j ...

  7. 使用Python脚本读取fasta文件

    读取FASTA文件 使用pip下载biopython pip.exe install biopython import sys from Bio import SeqIO sys.path #检查模块 ...

  8. java hex to ascii_在java中读取hex文件并将其转换为ascii

    早上好,我有一个serius问题. 我需要读取十六进制文件并将其转换为ascii. 我还需要在另一个文件上写入ascii. 我试过这样:在java中读取hex文件并将其转换为ascii /** * @ ...

  9. BioPython读取FASTA文件保留header中空格的方法

    问题 最近开始学习使用Biopython这个工具包,非常方便地可以处理一些序列文件.最近用Bio.SeqIO模块进行读取fasta文件到字典中的时候发现一个问题,如果你的fasta文件>开头的那 ...

最新文章

  1. 让服务器接近最终用户能解决性能问题吗?——微云网络
  2. .htaccess:正则表达式、重定向代码
  3. 构建根文件系统之busybox(四)完善
  4. 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
  5. hashcode java_java 的Object类的hashcode()方法具体是怎么实现的?
  6. 清除浮动塌陷的4种经典套路
  7. linux系统oracle启动过程,Linux主机下配置Oracle 10G自动启动过程记
  8. Bootstrap简洁、直观、强悍的前端开发框架
  9. Atitit.阿里云c盘 系统盘爆满解决方案
  10. project.management.cattle.io not found
  11. 在线JS代码调试工具JSFiddle和JSBin、菜鸟在线编辑器
  12. html编辑器pp,在线轻设计工具之H5
  13. php弹出式搜索,使用PHP进行Spotlight搜索
  14. Guawa的Splitter的工具类
  15. 登录失败:禁用的当前账户——window共享的傻X问题
  16. 移动端H5页面必用代码
  17. 关于对接支付接口遇到的问题(微信和支付宝)
  18. CSS,font-family,好看的中文字体
  19. 2-44钟静雯_day05
  20. What are 20 questions to detect fake data scientists?

热门文章

  1. 视线估计(Gaze Estimation)简介概述
  2. SystemC自带example的pipe研习
  3. 2023第十届中国北京国际老年用品、智慧养老及老龄服务展览会
  4. [ubuntu] 解决ubuntu中skype不能调用输入法的问题
  5. 清华大学转到计算机专业一年几个,计算机专业(转).doc
  6. uni-app老年模式字体设置思路
  7. 停车场寻车难?蓝牙5.1提供的新思路
  8. 达人评测 红米K30s至尊纪念版和iQOO Neo5活力版
  9. mac字体能用在linux吗,mac的字体和win通用吗
  10. 的撒困的空间三看到你塞拉