InputStream から読み取って String

ほとんど多くの現場で、ほぼ同じコードを書くことが多くて
煩わしいと思ったので、メモ。

ByteArrayOutputStream を使うのがいいのか?それとも BufferedReader を使うのが
いいのか?迷うところではある。

ByteArrayOutputStream を使う

// InputStream → toString   : InputStream close しないので呼び出し側でCLOSE
private String toStringFromInputStream(InputStream inst) throws IOException{
    ByteArrayOutputStream bo = new ByteArrayOutputStream();
    int len = 0;
    byte[] buf = new byte[1024];
    while((len=inst.read(buf, 0, buf.length)) >= 0){
        bo.write(buf, 0, len);
        bo.flush();
    }
    bo.close();
    return  bo.toString();
}

InputStreamReader & BufferedReader を使う

// InputStream → toString   : InputStream close しないので呼び出し側でCLOSE
private String toStringFromInputStream(InputStream inst) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(inst, StandardCharsets.UTF_8));
    StringBuilder sb = new StringBuilder();
    String line;
    while((line = br.readLine()) != null){
        sb.append(line);
     sb.append("\n");
    }
    return sb.toString();
}

文字コード改行、OS依存にするなら、sb.append("\n"); と直接するのではなく、
事前に System.getProperty("line.separator"); を取得してそれを使用ですね