Как я преобразовываю InputStream в Строку в Java?

Другое решение flexbox

Вы можете использовать инверсию порядка элементов в HTML. Затем, используя order, как в ответе Michael_B , вы можете использовать flex-direction: row-reverse; или flex-direction: column-reverse; в зависимости от вашего макета.

Рабочий пример:

.flex {
  display: flex;
  flex-direction: row-reverse;
   /* Align content at the "reversed" end i.e. beginning */
  justify-content: flex-end;
}

/* On hover target its "previous" elements */
.flex-item:hover ~ .flex-item {
  background-color: lime;
}

/* styles just for demo */
.flex-item {
  background-color: orange;
  color: white;
  padding: 20px;
  font-size: 3rem;
  border-radius: 50%;
}
5
4
3
2
1

21
задан Daniel Fortunov 19 November 2009 в 14:47
поделиться

5 ответов

Это моя версия,

public static String readString(InputStream inputStream) throws IOException {

    ByteArrayOutputStream into = new ByteArrayOutputStream();
    byte[] buf = new byte[4096];
    for (int n; 0 < (n = inputStream.read(buf));) {
        into.write(buf, 0, n);
    }
    into.close();
    return new String(into.toByteArray(), "UTF-8"); // Or whatever encoding
}
19
ответ дан 29 November 2019 в 06:56
поделиться

Ниже кода мог бы помочь Вам.

public String convertBytestoString(InputStream inputStream)
{
    int bytes;
    byte[] buffer = new byte[1024];

    bytes = inputStream.read(buffer);
    String stringData = new String(buffer,0,bytes);

    return stringData;

}
0
ответ дан 29 November 2019 в 06:56
поделиться

Если вы хотите сделать это просто и надежно, я предлагаю использовать Apache Jakarta Commons библиотеку ввода-вывода IOUtils.toString (java.io.InputStream, java. lang.String) метод.

24
ответ дан 29 November 2019 в 06:56
поделиться

Вы можете использовать BufferedReader , чтобы прочитать поток в StringBuilder в цикле, а затем получить полное содержимое из StringBuilder :

public String convertStreamToString(InputStream is) { 
  BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
  StringBuilder sb = new StringBuilder(); 

  String line = null; 

  try { 
    while ((line = reader.readLine()) != null) { 
    sb.append(line + "\n"); 
    } 
  } catch (IOException e) { 
    e.printStackTrace(); 
  } finally { 
    try { 
      is.close(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
  }

  return sb.toString(); 
} 

Полное раскрытие информации : Это решение, которое я нашел на KodeJava.org . Я размещаю его здесь для комментариев и критики.

1
ответ дан 29 November 2019 в 06:56
поделиться
String text = new Scanner(inputStream).useDelimiter("\\A").next();

Единственная хитрость заключается в том, чтобы запомнить regex \A, который соответствует началу ввода. Это фактически указывает Scanner токенизировать весь поток, от начала до (нелогичного) следующего начала...
- из Oracle Blog

8
ответ дан 29 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: