Чтение текстового файла в J2ME - PullRequest
3 голосов
/ 11 апреля 2009

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

Вот код:

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

1 Ответ

7 голосов
/ 11 апреля 2009

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

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...