2009-04-11 8 views
3

J'essaye de lire une ressource (asdf.txt), mais si le fichier est plus grand que 5000 octets, (par exemple) 4700 morceaux de caractère nul insérés à la fin de la variable de contenu . Est-il possible de les supprimer? (Ou pour définir la bonne taille du tampon?)Lire le fichier texte dans J2ME

Voici le 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(); 
} 

Répondre

7

La façon la plus simple est de faire la bonne chose: utiliser un lecteur pour lire des données texte:

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(). 

Non que vous définitivement devrait définir l'encodage du fichier texte que vous voulez lire. Dans l'exemple ci-dessus, ce serait THE_ENCODING.

Et notez que votre code et cet exemple de code fonctionnent aussi bien sur Java SE et J2ME.

+0

StringBuilder n'est pas disponible dans J2ME? – PhiLho

+2

StringBuilder ne l'est pas, mais StringBuffer l'est. J2ME est coincé dans un monde pré-Java 2 très étrange (pas de framework de collections pour petes sake!) –

+0

Ce n'est pas pré-Java 2, c'est pré-J2SE 1.5. J2ME est défini sur la base de la norme 1.4. – Fostah

Questions connexes