70

重複の可能性:
Java では、どのように InputStream を文字列に読み取り/変換しますか?

こんにちは、この BufferedInputStream を文字列に変換したいと思います。これどうやってするの?

BufferedInputStream in = new BufferedInputStream(sktClient.getInputStream() );
String a= in.read();
4

5 に答える 5

51
BufferedInputStream in = new BufferedInputStream(sktClient.getInputStream());
byte[] contents = new byte[1024];

int bytesRead = 0;
String strFileContents; 
while((bytesRead = in.read(contents)) != -1) { 
    strFileContents += new String(contents, 0, bytesRead);              
}

System.out.print(strFileContents);
于 2011-04-19T09:00:27.990 に答える
34

グアバで:

new String(ByteStreams.toByteArray(inputStream),Charsets.UTF_8);

コモンズ/IO :

IOUtils.toString(inputStream, "UTF-8")
于 2011-04-19T09:03:27.647 に答える
19

apache commons IOUtils を使用することをお勧めします

String text = IOUtils.toString(sktClient.getInputStream());
于 2011-04-19T09:04:48.140 に答える
11

次のコードを入力してください

結果を教えて

public String convertStreamToString(InputStream is)
                throws IOException {
            /*
             * To convert the InputStream to String we use the
             * Reader.read(char[] buffer) method. We iterate until the
    35.         * Reader return -1 which means there's no more data to
    36.         * read. We use the StringWriter class to produce the string.
    37.         */
            if (is != null) {
                Writer writer = new StringWriter();

                char[] buffer = new char[1024];
                try
                {
                    Reader reader = new BufferedReader(
                            new InputStreamReader(is, "UTF-8"));
                    int n;
                    while ((n = reader.read(buffer)) != -1) 
                    {
                        writer.write(buffer, 0, n);
                    }
                }
                finally 
                {
                    is.close();
                }
                return writer.toString();
            } else {       
                return "";
            }
        }

ありがとう、かりやちゃん

于 2011-04-19T08:59:09.527 に答える
5

すべてを自分で書きたくない場合(実際には書きたくない場合)-それを行うライブラリを使用してください。

Apachecommons-ioはまさにそれを行います。

より細かく制御したい場合は、IOUtils.toString(InputStream)またはIOUtils.readLines(InputStream)を使用します。

于 2011-04-19T09:05:09.023 に答える