# Datei in einen String einlesen



## xchookie (26. Mai 2004)

Hi!

Ich möchte eine komplette Datei in einen einzigen String einlesen.
Wie mache ich das am besten, so dass es auch möglichst zügig geht?
Muss nur auf der Konsole laufen.

Gruß,
xchookie


----------



## bygones (26. Mai 2004)

```
File file = new File(DATEI);
BufferedReader in = new BufferedReader(new FileReader(file));
StringBuffer buf = new StringBuffer(file.length());
String line;
while( (line = in.readLine()) != null) {
  buf.append(line);
}
in.close():
System.out.println(buf.toString());
```

Also - BufferedReader & StringBuffer nehmen


----------



## xchookie (26. Mai 2004)

```
StringBuffer buf = new StringBuffer(file.length());
```

file.length ist ein long-Wert, damit ist der Compiler aber für StringBuffer nicht einverstanden.
Andere Ideen oder ein Workaround?


----------



## Roar (26. Mai 2004)

casten? (int) file.length();


----------



## DP (26. Mai 2004)

genau, carsten hat recht 

immer an den stringbuffer denken, wenns mal mehr zeichen sind


----------



## DP (26. Mai 2004)

xchookie hat gesagt.:
			
		

> Andere Ideen oder ein Workaround?



api?!


----------



## xchookie (27. Mai 2004)

Danke für die weiteren Antworten.
Nach ein bisschen Basteln bin ich dann zu folgender Lösung gekommen.
Beispielprogramm:


```
import java.io.*;

public class Lesen
{
  public static void main(String[] args)
  {
    try
    {
      FileReader in = new FileReader("datei.txt");
      StringWriter sout = new StringWriter();
      int c;
      String text;
      while ((c=in.read()) !=-1)
        sout.write(c);
      text=sout.toString();
      System.out.println(text);
    } catch (IOException e) {
      System.out.println("Fehler: "+e);
    }
  }
}
```

Das war auch schon alles.


----------

