Stringbuffer nach String(lesbar) konvertieren
lima-city → Forum → Programmiersprachen → Java
ausgabe
auslese
auswerten
bit
bocken
buffer
byte
code
datei
file
fis
import
konvertieren
programm
scanner
schleife
server
string
system
umwandeln
-
Hallo Limas,
wie kann ich einen StringBuffer / StringBuilder zu einem String, mit Chars konvertieren?
StringBuffer ausgabe = new StringBuffer(); //... try { in = new BufferedInputStream( new FileInputStream("meineDatei.txt") ); for ( int c; ( c = in.read() ) != -1; ){ ausgabe.append(c); }
Jetzt würde ich den Inhalt der Datei gerne vom Programm auswerten lassen, nur dazu brauche ich dazu alles als Char String, und nicht als Byte.
Aus Performancegründen möchte ich aber nicht jedes Zeichen einzeln auslesen und an einen neuen String anhängen.
Ich hoffe, ich habe mich einigermaßen Verständlich ausgedrückt.
Gruß, Prog -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ach das ist etwas kompliziert.
Ich wüde einfach den Stringbuilder zu einem CharArray amchen.
Also length() vom stringbuilder und dann einen CharArray in der Größe und dann einfach den CharArray.toString()
Das wäre für mich das einfachste;)
Obwohl ich hab ganz vergessen, das es nur finale Arrays in Java gibt.
Hm, also du könntest auch gleich einfach einen CharArray in der Größer der Datei machen und dann den zum String.
Das müsste gehn.
Ich such mal schnell den Code raus.
import java.io.*; public class DateiLesen { public static void main(String args[]) { File file = new File("DateiLesen.txt"); try { FileReader fr = new FileReader(file); String gelesen; char[] temp = new char[(int) file.length()]; fr.read(temp); String gelesen = new String(temp); // oder String gelesen = temp.toString(); System.out.println(gelesen); fr.close(); } catch (FileNotFoundException e1) { System.err.println("Datei nicht gefunden"); } catch (IOException e2) { // hab ich grade keinen bock zu xD } } }
sry irgendwie funktioniert das mit dem code nicht O.o
Beitrag geändert: 23.12.2008 21:22:23 von reimann -
ich glaube die Lösung ist ganz einfach: du musst die Bits vorher in Chars umwandeln und dann an den StringBuilder/Buffer anhängen also
du schreibst einfach in die Schleife:
for ( int c; ( c = in.read() ) != -1; ){
ausgabe.append((char)c);
}
ausgabe.toString();
(char)Integerwert -> wandelt int in char
(int)char -> wandelt char in int
Beitrag geändert: 25.12.2008 19:37:36 von chweb -
Vielen vielen Dank chweb.
Das ist die Lösung, und funktioniert.
Ich hatte nur nicht bedacht, dass c = in.read() ja die Bytes ausliest, und nicht die Chars.
Gruß, Prog
-
Hallo,
wenn du eine Datei auswerten willst, gibt es 2 wesentlich einfecherere möglichkeiten:
1.) Die Datei ist nicht binär, also ob \n oder \r\n ist egal, dann verwende
String file = ""; Scanner scanner = new Scanner(new File("deinedatei.txt")); while(scanner.hasNextLine()) { String line = scanner.nextLine(); file.concat(line); } scanner.close();
2) Die Zweite Variante, die schnellste zum Auslesen, die auch "binary save" ist, ist folgende: Du liest die ganze datei mit einmal aus.
FileInputStream fis = new FileInputStream("deinedatei.txt"); byte[] b = new byte[(int)(new File("deinedatei.txt").length())]; fis.read(b); fis.close(); String str = new String(b);
Achtung: Das funzt nur, wenn die Datei < 30 MB und es keine Webdatei (von einem Server jedenfalls) ist.
Gruß Tillorgias -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage