ほとんど多くの現場で、ほぼ同じコードを書くことが多くて
煩わしいと思ったので、メモ。
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"); を取得してそれを使用ですね