作者penguin0322 (陆哥1/17记得共同101考本)
看板java
标题[问题] BufferedOutputStream输出时会有误差怎麽办
时间Mon Aug 6 09:31:13 2007
各位前辈您们好:
先说明一下我的状况,目前手上有一份DNA的资料要跑,需要将序列整理一下
他的格式如下:
>1097156670763
TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCTTGCCCAAAAAAATCGACTTCTTTAAAAACAATTGTCGTTCCCCCGATGCGATCAAACGCTTACG
CACTCCGTGCCGCTAGAGCCGCAGAAATCGCCCCGACTAGGTCGACGCCTTCCGCATGACCCACTACTAACAAGGTTATGACTGCTCTAGCCGACAGGTCACGAATACAAACCAACACACACGAAACATGCCAGAATTCGAAG
...
CCGCCCCATTGACCTACACATCAAAGGGCTCAAAAAGCTCAACTGCCAAGTAGATATCTCCAACGGTTACGTCCACGTCGACGCCTCCAACATCGAAGGCGGCC
>1097156670764
CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTTTTATAGGAAAAACTCTACTTGAAAAAAATTATGCAAATATTTTATGTAAAAATTCCGAAACAAG
AGGTGGGGCTGAAGTTCGTATTAAATGGAAAAATGAAGACCTGTTAAAGCTTTAGTGTAGTTTCTTTTTATTTTCAAATAAGCCACTCAATTGAGAAACCATCACATCTCCAAGCTCATGTACATCTGTTATTTTAATAGCTT
...
CAAACTCTTTCTTCCAGAAATTTAACATTTTTGTAGACACATCATTGAGCTCTAATTTAAAGAATTTATTTAACATATATAGTTCAAAAGCTTCAGTCACAGGAACATCTTCTTTATTTTT
大约有3,000,000组 目前先跑前面十组试试
但是在输出档案里却只有印出约六组
试着在程式里加上System.out.println来看哪里没读到、没改到
却都没有发现问题
再试着将资料增多 结果就可以正确的跑出该有的组数
但是将资料减少 结果输出档案中反而一组也没有印出来
预计输出格式如下:
>1097156670763
TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCT
>1097156670764
CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTT
也就是将多行的序列去掉N後再将之凑成一列
--
以下是我的程式码 麻烦大家替我解困了
谢谢
--
import java.io.*;
public class proteinTranslations {
public static void main(String[] args){
try {
//这里是一些宣告,应该可以跳过
File inputFile =
new File("ten.txt");
File outputFile =
new File("tenGOS.txt");
FileReader fileReader =
new FileReader(inputFile);
BufferedReader bufferedReader =
new BufferedReader(fileReader);
byte[] buffer;
BufferedOutputStream bufferedOut =
new BufferedOutputStream(new FileOutputStream(outputFile));
int flag=0;
String line="", total="", lineSep="";
lineSep = System.getProperty("line.separator");
//translating是用来去掉N用的
translating translate=null;
while ((line = bufferedReader.readLine()) != null) {
flag++;
//以>为区分的标地,每次遇以>为开头的一行
//便将之前整理好的total印出
//第一次除外,且最後一次total在回圈外印出
//在用println测的时候,N都有被删掉
//也有排成一列
//可是就是没有输出到档案中
if (line.indexOf(">") == 0) {
if (flag == 1) {
line+=lineSep;
buffer = line.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
}
else {
buffer = total.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
total="";
line = lineSep + line;
line+=lineSep;
buffer = line.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
}
}
else {
translate =
new translating(line, line);
translate.deleteN();
total+=translate.result();
}
}
buffer = total.getBytes();
bufferedOut.write(buffer, 0, buffer.length);
total="";
}
catch (Exception e) {
System.out.println("File Not Found");
}
}
}
--
public class translating {
public String original="", translated="";
int index1=0, index2=0;
public translating () {}
public translating (String original, String translated) {
this.original = original;
this.translated = translated;
}
public void deleteN () {
//delet NNN...first
original = original.replaceAll("N", "");
translated = original;
}
public String result () {
return translated;
}
}
--
麻烦大家了
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.73.50