質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

759閲覧

InputStreamをStringに変換するコードが理解できません。

tanaka_hana

総合スコア19

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/11/07 08:20

疑問

よくネットにのっているInputStreamをStringに変換するJavaの定型処理が理解できません。。
特に、該当のソースコードのコメントでも書いたように、
0. char配列で要素1024個作った意味
0. read()に配列を入れるとはどういうことか

が分かりません。このメソッド自体はApache CommonsのCommons IOに変換メソッドが用意されているらしいですが、気になります。どうか、よろしくお願いします。

該当のソースコード

Java

1static String convertInputStreamToString(InputStream is) throws IOException { 2 InputStreamReader reader = new InputStreamReader(is); 3 StringBuilder builder = new StringBuilder(); 4 //この1024とは? 5 char[] buffer = new char[1024]; 6 int read; 7 //read()に配列を入れる? 8 while (0 <= (read = reader.read(buffer))) { 9 builder.append(buffer, 0, read); 10 } 11 return builder.toString(); 12}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice142

2018/11/07 08:29

参考にされたページなどがあれば質問文を修正して追記してください。
guest

回答2

0

ベストアンサー

char配列で要素1024個作った意味

作り手側の問題です。
最大で1024文字格納しますよっていうだけなので、必ずこれじゃなきゃいけないわけではないです。

read()に配列を入れるとはどういうことか

その配列に文字列を格納します。
JavaDoc-クラスReader

このメソッド自体はApache CommonsのCommons IOに変換メソッドが用意されているらしいですが

InputStreamReaderも継承しているReaderもjava.ioパッケージのクラスです。

投稿2018/11/07 08:35

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanaka_hana

2018/11/07 09:08

返信ありがとうございます。 読み取り先のものを1024文字づつバッファから転送先のchar型配列に入れていき、その配列に文字が入るという条件をみたすと、StringBufferに文字が追加される。そして、StringBufferに溜まったものを最後に文字列として返すということですね。理解できました!ありがとうございます。
guest

0

char配列で要素1024個作った意味

1024バイト = 1KB だからではないでしょうか。
1KB分の領域を確保するという意味かなと。
全体の流れ次第ですが、あまり1024という数値に囚われないほうがいいかもしれません。

read()に配列を入れるとはどういうことか

read()単一の文字を読み込みです。
上記リンクの仕様にあるように配列というより転送先バッファですね。
このあたりはドキュメント漁っていったほうが理解が深まるかもしれません。

投稿2018/11/07 08:28

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問