Преобразование BlackBerry InputStream в строку

Как преобразовать InputStream в строку на BlackBerry?


person Aswan    schedule 30.11.2010    source источник


Ответы (3)


Я бы сохранил данные из inputStream в StringBuffer. Код будет выглядеть так:

byte[] buffer = new byte[1024];
StringBuffer sb = new StringBuffer();
int readIn = 0;
while((readIn = inputStream.read(buffer)) > 0)
{
     String temp = new String(buffer, 0, readIn);
     sb.append(temp);  
}
String result = sb.toString();
person Jonathan    schedule 30.11.2010

Как насчет этого для минимального кода:

String str = new String(IOUtilities.streamToBytes(is), "UTF-8");
person Marc Novakowski    schedule 01.12.2010
comment
Есть ли решение, отличное от Blackberry? - person User1; 13.01.2011
comment
да, посмотрите на принятый ответ на этот вопрос от Джонатана - он не использует API-интерфейсы, специфичные для BlackBerry. - person Marc Novakowski; 15.01.2011

Подход Джонатана предполагает, что ваши байты представляют собой строку в кодировке BlackBerry по умолчанию (ISO-8859-1). Однако большинство современных приложений поддерживают несколько языков, поэтому лучшей кодировкой для поддержки является UTF-8. Чтобы соблюдать установленную кодировку, вы можете использовать что-то вроде этого:

/**
 * Constructs a String using the data read from the passed InputStream.
 * Data is read using a 1024-chars buffer. Each char is created using the passed 
 * encoding from one or more bytes.
 * 
 * <p>If passed encoding is null, then the default BlackBerry encoding (ISO-8859-1) is used.</p>
 * 
 * BlackBerry platform supports the following character encodings:
 * <ul>
 * <li>"ISO-8859-1"</li>
 * <li>"UTF-8"</li>
 * <li>"UTF-16BE"</li>
 * <li>"UTF-16LE"</li>
 * <li>"US-ASCII"</li>
 * </ul>
 * 
 * @param in - InputStream to read data from.
 * @param encoding - String representing the desired character encoding, can be null.
 * @return String created using the char data read from the passed InputStream.
 * @throws IOException if an I/O error occurs.
 * @throws UnsupportedEncodingException if encoding is not supported.
 */
public static String getStringFromStream(InputStream in, String encoding) throws IOException {
    InputStreamReader reader;
    if (encoding == null) {
        reader = new InputStreamReader(in);
    } else {
        reader = new InputStreamReader(in, encoding);            
    }

    StringBuffer sb = new StringBuffer();

    final char[] buf = new char[1024];
    int len;
    while ((len = reader.read(buf)) > 0) {
        sb.append(buf, 0, len);
    }

    return sb.toString();
}
person Vit Khudenko    schedule 30.11.2010