- Forum-Beiträge: 5.136
08.05.2011, 01:02:17 via Website
08.05.2011 01:02:17 via Website
public String readTextFile(String myFile) {
String DEBUG_TAG = "inside_readTextFile";
String line = "";
StringBuffer sb = new StringBuffer();
try {
// File zum Lesen oeffenen
FileInputStream in = new FileInputStream(myFile);
// Wenn das File existiert
// zum einlesen vorbereiten
InputStreamReader input = new InputStreamReader(in);
BufferedReader buffreader = new BufferedReader(input);
// Die Datei zeilenweise einlesen und in sb appenden
// Der appender wird hier benutzt um das ganze zu beschleunigen
// Operation mit + wäre hier viel zu langsam.
try {
while ((line = buffreader.readLine()) != null) {
//Log.d(DEBUG_TAG, "LogLine: " + line);
sb.append(line);
//sb.append(line).append("\n"); // Diese Version haengt noch einen Line Separator (Line Feed) hinten dran.
}
} catch (Exception e) {
e.printStackTrace();
Log.d(DEBUG_TAG, "Error reading Line from File: " + e.getMessage());
}
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
Log.d(DEBUG_TAG, "Error closing File: " + e.getMessage());
}
} catch (java.io.FileNotFoundException e) {
e.printStackTrace();
Log.d(DEBUG_TAG, "File not found: " + e.getMessage());
}
return sb.toString();
}
Der Vorteil ist hier unter anderem die Geschwindigkeit die durch Verwendung des StringBuffers anstelle einer üblicherweise verwendeten normalen Concatenation mit Hilfe des "+" Zeichens zustande kommt.
Darüber hinaus werden die Fehler entsprechend abgefangen und ausgegeben.
Der Aufruf der Methode erfolgt beispielsweise so:
String meinFile = readTextFile("/sdcard/old_batman.txt");
0,35 MByte werden mit dieser Methode in etwa 0,31 Sek. eingelesen.
— geändert am 08.05.2011, 14:35:05
lg Voss