ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
380
380
EMPFEHLEN
-
Das Programm soll nicht jede zeile einzeln lesen, sonder den eingelesen text als ganzes betrachten,damit er mir z.B. die Länge des Textes wiedergibt. Jetzt weiß ich aber nicht, welche Anweisungen es gibt, damit er die Zeilen nicht einzeln liest.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
... File file = new File(filename); try { FileReader reader = new FileReader(file); BufferedReader buff = new BufferedReader(reader); while ((zeile = buff.readLine()) != null) < Hier muss sicher iwas andres hin :) {System.out.println(zeile); ... }
-
10.08.11 12:42 #2
Hi,
schau dir doch mal die API von Commons IO an. Da gibt es eine Klasse FileUtils. Mit dieser Klasse kannst du die Methode readFileToString(File file) aufrufen. Dann bekommst du den kompletten Dateiinhalt als String zurückgegeben.
Viele Grüße
Sporticus
-
Ich kann damit leider nicht so viel anfangen. Was muss ich denn da genau machen?
-
10.08.11 13:45 #4
Also...
1. Option:- Du gehst auf die Commons IO Seite und lädst dir das commons-io-...-bin.zip runter
- Anschließend entpackst du das und kopierst die commons-io-...jar Datei in dein Projekt
- Dann machst du einen Rechtsklick auf die commons-io-...jar Datei und klickst auf 'Build Path' --> 'add to Build Path'
2. Option: (selber programmieren)
Du kannst das natürlich auch selber machen.
Ein Lösungsvorschlag:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class FileScanner { /** * @param file * @return */ public String fileToString(File file) { StringBuilder holeText = new StringBuilder(); BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); String line; while((line = reader.readLine()) != null) { holeText.append(line); // <-- nächste Zeile hinzufügen holeText.append("\n"); // <-- für den Zeilenumbruch } } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } finally { if(reader != null) { try { reader.close(); } catch(IOException e) { e.printStackTrace(); } } } return holeText.toString(); } }
Ich hoffe das hilft dir weiter
-
Erzeug dir einfach einen StringBuilder und häng in der Schleife alles Zeilen an den builder an.
Code java:1 2 3 4 5 6 7
StringBuilder builder = new StringBuilder(); while ((zeile = buff.readLine()) != null) { builder.append(zeile); } System.out.println(builder.toString());
Edit: Zu langsam
-
Danke erstmal.
Noch eine Frage.
Bei dem Text handelt es sich um eine DNA Sequenz.
">gi|291280824:4365885-4366877 Escherichia coli
ATGAAAATAAAGAACATTCTACTCACCCTTTGCACCTCACT
ACCTCACTCCTGCTTACCAAACCTCACTCCTGCTTACCAA"
Nun soll aber die erste Zeile (d.h. nach dem >) nicht beachtet werden, also ab der zweiten sollen die Berechnungen beginnen.
Ich dachte vielleicht kann ich da mit einer if- Verzweigung iwie angeben, dass diese Zeile nicht beachtet werden soll.
-
10.08.11 15:28 #7
Du kannst das mittels indexOf und substring relativ leicht realisieren. Hier ein Beispiel:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/** * */ public void berechne() { String string = fileToString(new File("DeineDatei.txt")); /* * gibt die Position des ersten Zeilenumbruchs zurück */ int firstLineBreakIndex = string.indexOf("\n"); /* * dadurch schneidest du alles, was vor dem ersten Zeilenumbruch steht ab * ==> +1 daher, da sonst der Zeilenumbruch noch mit im dna-String stehen würde */ String dna = string.substring(firstLineBreakIndex+1, string.length()); System.out.println(dna); }
-
Wieso so kompliziert? Zu mal es auf keinen Fall performant ist, nach dem man den Text bereits Zeilenweise eingelesen hat, ihn anschließend schon wieder an den Zeilenumbrüchen zu zerteilen.
Ruf vor der Schleife einmal "readLine" auf.
Hier nochmal anhand von meinem obigen Code.
Code java:
Und Falls du die Gesamtlänge brauchst, kannst du ja einfach beide Längen addieren.
Ähnliche Themen
-
Readline frage
Von DerKoenig im Forum JavaAntworten: 6Letzter Beitrag: 04.11.10, 13:04 -
[VB.NET] Enum-Werte per Console.Readline einlesen
Von DirkHo im Forum .NET DatenverwaltungAntworten: 2Letzter Beitrag: 25.04.07, 14:08 -
readline() nur wenn bestimmte char in line vorkommen
Von mashine-obf im Forum .NET DatenverwaltungAntworten: 6Letzter Beitrag: 01.09.05, 15:12 -
GNU Readline & Sockets
Von jccTeq im Forum C/C++Antworten: 1Letzter Beitrag: 12.05.05, 12:52 -
eingabe.readLine() wird in netbeans 4.0 ignoriert!?
Von acky im Forum JavaAntworten: 4Letzter Beitrag: 05.04.05, 09:06





Zitieren

Login





