Hallo
Ich habe eine Methode, die einen Stream Zeilenweise mit Daten füttert. Es handelt sich bei meinem Beispiel um eine Sequenz von knapp 600.000 Zeichen.
Hier der Code:
Meine Frage:
Warum brauch ich am Ende der Schleife ein flush? Ohne dem flush gibt er mir ungefähr 450.000 Zeichen aus und hört immer an der selben Stelle auf. Nur mit dem flush wird der komplette String ausgegeben. Kann es sein, dass der Puffer irgendwann voll ist und der Stream nichts mehr aufnimmt? Aber da ich ja die Zeichen Zeilenweise schreibe, dachte ich mir, dass es eh kein Problem geben dürfte...
Edit:
getSequence ist eine Methode, die mir die 600.000-Zeichen-Sequenz leifert..
Ich habe eine Methode, die einen Stream Zeilenweise mit Daten füttert. Es handelt sich bei meinem Beispiel um eine Sequenz von knapp 600.000 Zeichen.
Hier der Code:
Code:
public void printSeqInFastaFormat(OutputStream os) throws IOException
{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(">" + getName());
bw.newLine();
if(getSequence().length() > 60)
{
int n = getSequence().length() / 60;
for(int i = 0; i <= n; i++)
{
if(i == n)
{
bw.write(getSequence().substring(i*60));
break;
}
bw.write(getSequence().substring(i*60, (60*i)+60));
bw.newLine();
}
bw.flush();
}
}
Meine Frage:
Warum brauch ich am Ende der Schleife ein flush? Ohne dem flush gibt er mir ungefähr 450.000 Zeichen aus und hört immer an der selben Stelle auf. Nur mit dem flush wird der komplette String ausgegeben. Kann es sein, dass der Puffer irgendwann voll ist und der Stream nichts mehr aufnimmt? Aber da ich ja die Zeichen Zeilenweise schreibe, dachte ich mir, dass es eh kein Problem geben dürfte...
Edit:
getSequence ist eine Methode, die mir die 600.000-Zeichen-Sequenz leifert..