用JAVA从文件中提取特定数据

用JAVA从文件中提取特定数据,java,fasta,Java,Fasta,这是存储在文本文件中的数据。我如何严格地提取数据 >1A3B:H|PDBID|CHAIN|SEQUENCE IVEGSDAEIGMSPWQVMLFRKSPQELLCGASLISDRWVLTAAHCLLYPPWDKNFTENDLLVRIGKHSRTRYERNIEKISM LEKIYIHPRYNWRENLDRDIALMKLKKPVAFSDYIHPVCLPDRETAASLLQAGYKGRVTGWGNLKETWTANVGKGQPSVL QVVNLPIVERPVCKDSTRIRITDNMFCAGYK

这是存储在文本文件中的数据。我如何严格地提取数据

>1A3B:H|PDBID|CHAIN|SEQUENCE
IVEGSDAEIGMSPWQVMLFRKSPQELLCGASLISDRWVLTAAHCLLYPPWDKNFTENDLLVRIGKHSRTRYERNIEKISM
LEKIYIHPRYNWRENLDRDIALMKLKKPVAFSDYIHPVCLPDRETAASLLQAGYKGRVTGWGNLKETWTANVGKGQPSVL
QVVNLPIVERPVCKDSTRIRITDNMFCAGYKPDEGKRGDACEGDSGGPFVMKSPFNNRWYQMGIVSWGEGCDRDGKYGFY
THVFRLKKWIQKVIDQFGE
>1A3B:I|PDBID|CHAIN|SEQUENCE
GGQSHNDGDFEEIPEEYL
>1A3B:L|PDBID|CHAIN|SEQUENCE
TFGSGEADCGLRPLFEKKSLEDKTERELLESYIDGR
仅当

  ">1A3B:I|PDBID|CHAIN|SEQUENCE" and ">1A3B:L|PDBID|CHAIN|SEQUENCE", 
我们都知道

此外,在这个给定的示例中,虽然要检索的数据只有一行,但它也可以变化到多行。 到目前为止,我尝试将文件的全部内容写入一个字符串变量并使用substring,但这种逻辑似乎有缺陷,因为结尾索引未知。请帮忙

导入java.io.*;公共类ReadingChainSpecificFastaSequence{

">1A3B:I|PDBID|CHAIN|SEQUENCE" 

您似乎想阅读每一行输入,并:

如果行中存在\,请在此字符上拆分它 查看拆分字符串的第一个元素,并在以下位置将其打断:要查找当前标记,请将第一部分1A3B保存到一个变量,将第二部分保存到另一个变量 从这个起始标记开始,确定您要查找的下一个标记是什么:取第一部分并在第二部分后添加字母,形成1A3B:L。 继续读取输入的每一行,将这些行存储在某种列表或数组中,直到一行以结束标记1A3B:L开始。
将问题分解为更小、更容易定义的步骤

您知道您的文件有一个文件结尾,并且您知道您的文件使用>符号定义文本部分的开头

将文件读入字符串。 查找第一个>的索引。 查找下一行分隔符的索引。 解释章节标题。 查找下一个>,或文件结尾的索引 在行分隔符和索引之间保存数据。 从查找下一行分隔符的索引开始重复此步骤,直到文件结束。
请在问题中包含您的代码。当我们只知道>1A3B:I | PDBID | CHAIN |序列时,您的意思是什么?您的意思是您不知道结束分隔符是什么?这部分没有意义。或者,您的意思是要提取的数据在以>开头的下一行结束?@Jim:我们知道开始分隔符,并且要提取的数据在以>
    public static void main(String[] args) {


            File file = new File("1A3B.fasta.txt");
            BufferedInputStream bin = null;

            try
            {

                    FileInputStream fin = new FileInputStream(file);


                    bin = new BufferedInputStream(fin);


                    byte[] contents = new byte[1024];

                    int bytesRead=0;
                    String strFileContents=null;

                    while( (bytesRead = bin.read(contents)) != -1){

                            strFileContents = new String(contents, 0, bytesRead);

                    }
                   // System.out.print(strFileContents); 
                    String search = ">1A3B:I|PDBID|CHAIN|SEQUENCE";
                    int start = (strFileContents.indexOf(search))+30;
                    String search2= ">1A3B:L|PDBID|CHAIN|SEQUENCE";
                    int end= (strFileContents.indexOf(search2));
                   String result = strFileContents.substring(start,end);

            }
            catch(FileNotFoundException e)
            {
                    System.out.println("File not found" + e);
            }
            catch(IOException ioe)
            {
                    System.out.println("Exception while reading the file "+ ioe);
            }
            finally
            {

                    try{
                            if(bin != null)
                                    bin.close();
                    }catch(IOException ioe)
                    {
                            System.out.println("Error while closing thestream:"+ioe);
                    }

            }
    }
    }