Java 将InputStream转换为字符串(telnet)

Java 将InputStream转换为字符串(telnet),java,string,stream,inputstream,telnet,Java,String,Stream,Inputstream,Telnet,使用InputStream,我希望将其作为字符串(或类似字符串的数据) 我如何将输入流>代码转换成更容易处理的(StringBuffer) >或类似。 可以从中考虑。 从文档: 此方法在内部缓冲输入,因此不需要使用 缓冲输入流 你可以从考虑 从文档: 此方法在内部缓冲输入,因此不需要使用 缓冲输入流 无法将InputStream转换为StringBuffer。但是如果您想使用StringBuffer,那么您可以将InputStream中的输入作为int读取,并将其附加到StringBuffer中

使用
InputStream
,我希望将其作为字符串(或类似字符串的数据)

<>我如何将<代码>输入流>代码转换成更容易处理的(StringBuffer)<代码> >或类似。

可以从

中考虑。 从文档:

此方法在内部缓冲输入,因此不需要使用 缓冲输入流

<>你可以从

考虑 从文档:

此方法在内部缓冲输入,因此不需要使用 缓冲输入流


无法将
InputStream
转换为
StringBuffer
。但是如果您想使用StringBuffer,那么您可以将
InputStream
中的输入作为int读取,并将其附加到
StringBuffer
中,如下所示

int i=fis.read(); //it will read Character from stream and returns ascii value of char.
StringBuffer sb=new StringBuffer();
sb.append((char)i); //This will cast int into character and append to StringBuffer.

无法将
InputStream
转换为
StringBuffer
。但是如果您想使用StringBuffer,那么您可以将
InputStream
中的输入作为int读取,并将其附加到
StringBuffer
中,如下所示

int i=fis.read(); //it will read Character from stream and returns ascii value of char.
StringBuffer sb=new StringBuffer();
sb.append((char)i); //This will cast int into character and append to StringBuffer.
这是中途:

package teln;

import static java.lang.System.out;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;

public final class ConnectMUD {

    private static String EOL = "/[#]/";
    private static TelnetClient tc;

    public static void main(String[] args) throws SocketException, IOException {
        tc = new TelnetClient();
        tc.connect("some_mud.com", 123);
        readLines(tc.getInputStream());
    }

    private static void readLines(InputStream in) throws IOException {

        InputStreamReader is = new InputStreamReader(in);
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(is);
        String read = br.readLine();

        while (read != null) {
            out.println(read);
            sb.append(read);
            read = br.readLine();
            parseLine(read);
        }
    }

    private static void parseLine(String read) {
        login(read);
    }

    private static void login(String read) {
        //hmm, how do you know when you
        //get some funky, non-standard login?
        //look for an EOL of some sort?
    }
}
这里可能会有一些非常大的字符串,但我只是首先关注功能。只是尝试开始解析用于播放da MUD的行。

这是其中的一部分:

package teln;

import static java.lang.System.out;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;

public final class ConnectMUD {

    private static String EOL = "/[#]/";
    private static TelnetClient tc;

    public static void main(String[] args) throws SocketException, IOException {
        tc = new TelnetClient();
        tc.connect("some_mud.com", 123);
        readLines(tc.getInputStream());
    }

    private static void readLines(InputStream in) throws IOException {

        InputStreamReader is = new InputStreamReader(in);
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(is);
        String read = br.readLine();

        while (read != null) {
            out.println(read);
            sb.append(read);
            read = br.readLine();
            parseLine(read);
        }
    }

    private static void parseLine(String read) {
        login(read);
    }

    private static void login(String read) {
        //hmm, how do you know when you
        //get some funky, non-standard login?
        //look for an EOL of some sort?
    }
}

这里可能会有一些非常大的字符串,但我只是首先关注功能。只是试着开始解析播放da MUD的行。

也许我做错了?这似乎导致了一个整数,字符数或其他东西,而不是我所期望的单词。@Thufir yea。fis.read()读取字节数据并解析为
int
。但您可以通过在read()方法中指定byte[]来读取多个字符。这只会打印数字,你不会得到任何字符。即使使用byte,您仍然可以获得数字。您必须将其转换为字符,如以下字符ch=(char)i,才能从FileInputStream获取字符。再次检查我的答案,我编辑了它。也许我做错了?这似乎导致了一个整数,字符数或其他东西,而不是我所期望的单词。@Thufir yea。fis.read()读取字节数据并解析为
int
。但您可以通过在read()方法中指定byte[]来读取多个字符。这只会打印数字,你不会得到任何字符。即使使用byte,您仍然可以获得数字。您必须将其转换为字符,如以下字符ch=(char)i,才能从FileInputStream获取字符。再次检查我的答案,我编辑了它。看我喜欢:因为它对我来说很容易理解:)看我喜欢:因为它对我来说很容易理解:)对不起,我指的是一个不终止的实时流。可怜的问题。对不起,我指的是一条没有终止的实时流。可怜的问题。