- 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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.