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 展开
>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 展开
4个回答
展开全部
直接给你一段实际可以用的代码吧
/**
* 读取一行一行的文件
*
* @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;
}
这样懂了吧?
展开全部
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();
}
}
}
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();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用bufferReader读行,用String的contains方法判断是否包含,输出就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询