2009-04-11 3 views
3

Я пытаюсь прочитать ресурс (asdf.txt), но если файл больше 5000 байтов (например), 4700 штук нулевого символа, вставленных в конец переменной содержимого , Есть ли способ удалить их? (Или, чтобы установить правильный размер буфера?)Чтение текстового файла в J2ME

Вот код:

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

ответ

7

Самый простой способ сделать правильные вещи: Используйте устройство для чтения для чтения текстовых данных:

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

Не то, чтобы вы определенно должен определить кодировку текстового файла, который вы хотите прочитать. В приведенном выше примере это будет THE_ENCODING.

Обратите внимание, что и ваш код, и этот пример кода одинаково хорошо работают на Java SE и J2ME.

+0

StringBuilder недоступен в J2ME? – PhiLho

+2

StringBuilder нет, но StringBuffer есть. J2ME застрял в каком-то очень странном мире до Java2 (нет рамки для коллекций для любимых!) –

+0

Это не предварительная Java 2, это pre-J2SE 1.5. J2ME определяется на основе стандарта 1.4. – Fostah

Смежные вопросы