【发布时间】:2014-07-19 07:41:30
【问题描述】:
我正在尝试从 InputStream 中读取一些数据,然后将它们放入 StringBuffer 中进行打印。
我把这段代码放在main方法中。
我的问题是 StringBuffer 只在我调试代码时打印,当我正常运行时它没有打印。
我的代码:
Socket s = new Socket();
String host = "";
PrintWriter s_out = null;
BufferedReader s_in = null;
InputStream in = null;
s.connect(new InetSocketAddress(host, 23));
//writer for socket
s_out = new PrintWriter(s.getOutputStream(), true);
//reader for socket
s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
in = s.getInputStream();
if(s.isConnected() == true && s.isInputShutdown() == false && s.isOutputShutdown() == false){
StringBuffer sb = new StringBuffer();
boolean found = false;
char ch;
int numberOfBytesThatCanBeRead = in.available();
for(int j = 0; j < numberOfBytesThatCanBeRead; j++){
ch = (char) s_in.read();
//System.out.print(ch);
sb.append(ch);
}
System.out.print(sb.toString());
s_in.close();
in.close();
s_out.close();
s.close();
这个变量的正确值是564,但是我调试代码时才返回,正常运行时返回21。
int numberOfBytesThatCanBeRead = in.available();
所以,我的问题是:为什么我在调试代码的时候,StringBuffer的结果是正确的,而我正常运行的时候却不是?
谢谢!
【问题讨论】:
标签: java string sockets inputstream bufferedreader