用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);
}
}
}
}