Как преобразовать DataInputStream в строку в Java? - PullRequest
10 голосов
/ 06 октября 2010

Я хочу задать вопрос о Java.Я использовал URLConnection в Java для извлечения DataInputStream.и я хочу преобразовать DataInputStream в переменную String в Java.Что я должен делать?Может кто-нибудь мне помочь.спасибо.

Вот мой код:

URL data = new URL("http://google.com");
URLConnection dataConnection = data.openConnection();
DataInputStream dis = new DataInputStream(dataConnection.getInputStream());
String data_string;
// convent the DataInputStream to the String

Ответы [ 3 ]

10 голосов
/ 06 октября 2010
import java.net.*;
import java.io.*;

class ConnectionTest {
    public static void main(String[] args) {
        try {
            URL google = new URL("http://www.google.com/");
            URLConnection googleConnection = google.openConnection();
            DataInputStream dis = new DataInputStream(googleConnection.getInputStream());
            StringBuffer inputLine = new StringBuffer();
            String tmp; 
            while ((tmp = dis.readLine()) != null) {
                inputLine.append(tmp);
                System.out.println(tmp);
            }
            //use inputLine.toString(); here it would have whole source
            dis.close();
        } catch (MalformedURLException me) {
            System.out.println("MalformedURLException: " + me);
        } catch (IOException ioe) {
            System.out.println("IOException: " + ioe);
        }
    }
}  

Это то, что вы хотите.

7 голосов
/ 06 октября 2010

Если вы хотите прочитать данные с общего URL (например, www.google.com), вы, вероятно, вообще не хотите использовать DataInputStream. Вместо этого создайте BufferedReader и прочитайте построчно с помощью метода readLine(). Используйте поле URLConnection.getContentType(), чтобы узнать кодировку содержимого (это понадобится вам для правильного создания читателя).

Пример:

URL data = new URL("http://google.com");
URLConnection dataConnection = data.openConnection();

// Find out charset, default to ISO-8859-1 if unknown
String charset = "ISO-8859-1";
String contentType = dataConnection.getContentType();
if (contentType != null) {
    int pos = contentType.indexOf("charset=");
    if (pos != -1) {
        charset = contentType.substring(pos + "charset=".length());
    }
}

// Create reader and read string data
BufferedReader r = new BufferedReader(
        new InputStreamReader(dataConnection.getInputStream(), charset));
String content = "";
String line;
while ((line = r.readLine()) != null) {
    content += line + "\n";
}
7 голосов
/ 06 октября 2010

Вы можете использовать commons-io IOUtils.toString(dataConnection.getInputStream(), encoding) для достижения своей цели.

DataInputStream не используется для того, что вы хотите - то есть вы хотите прочитать содержимоевеб-сайт как String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...