2009-04-11 20 views
3

Ich versuche, eine Ressource (asdf.txt) zu lesen, aber wenn die Datei größer als 5000 Bytes ist, werden zum Beispiel 4700 Null-Zeichen am Ende der Inhaltsvariablen eingefügt . Gibt es eine Möglichkeit, sie zu entfernen? (Oder die richtige Größe des Puffers gesetzt?)Lesen von Textdatei in J2ME

Hier ist der Code:

String content = ""; 
try { 
    InputStream in = this.getClass().getResourceAsStream("asdf.txt"); 
    byte[] buffer = new byte[5000]; 
    while (in.read(buffer) != -1) { 
     content += new String(buffer); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Antwort

7

Der einfachste Weg ist die richtige Sache zu tun: ein Reader Verwenden von Textdaten zu lesen:

String content = ""; 
Reader in = new InputStreamReader(this.getClass().getResourceAsStream("asdf.txt"), THE_ENCODING); 
StringBuffer temp = new StringBuffer(1024); 
char[] buffer = new char[1024]; 
int read; 
while ((read=in.read(buffer, 0, buffer.len)) != -1) { 
    temp.append(buffer, 0, read); 
} 
content = temp.toString(). 

Nicht dass Sie definitiv sollten die Codierung der Textdatei, die Sie lesen möchten, definieren. Im obigen Beispiel wäre das THE_ENCODING.

Und beachten Sie, dass sowohl Ihr Code und dieser Beispielcode auf Java SE und J2ME gleichermaßen gut funktionieren.

+0

StringBuilder ist in J2ME nicht verfügbar? – PhiLho

+2

StringBuilder ist nicht, aber StringBuffer ist. J2ME steckt in einer sehr seltsamen Prä-Java 2-Welt (kein Collections-Framework für Pete-Sake!) –

+0

Es ist nicht vor Java 2, es ist vor J2SE 1.5. J2ME ist basierend auf dem 1.4-Standard definiert. – Fostah