Apache telnet使用InputStream
,我希望read作为字符串(或类似字符串的数组)。
如何将InputStream
转换为更容易(对我来说)处理的事情,StringBuffer
或类似事件。
答案 0 :(得分:2)
public static String toString(InputStream input)
throws IOException
来自doc:
此方法在内部缓冲输入,因此无需使用 的BufferedInputStream。
答案 1 :(得分:1)
您无法将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.
答案 2 :(得分:0)
这就在那里:
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的行。